陣列
MongooseArray.prototype.$pop()
MongooseArray.prototype.$shift()
MongooseArray.prototype.addToSet()
MongooseArray.prototype.includes()
MongooseArray.prototype.indexOf()
MongooseArray.prototype.inspect()
MongooseArray.prototype.nonAtomicPush()
MongooseArray.prototype.pop()
MongooseArray.prototype.pull()
MongooseArray.prototype.push()
MongooseArray.prototype.remove()
MongooseArray.prototype.set()
MongooseArray.prototype.shift()
MongooseArray.prototype.sort()
MongooseArray.prototype.splice()
MongooseArray.prototype.toObject()
MongooseArray.prototype.unshift()
MongooseArray.prototype.$pop()
請參閱
每次文件 save()
最多原子性彈出陣列一次。
注意
在儲存之前對陣列多次調用此方法,會發送與調用一次相同的命令。 此更新是使用 MongoDB 的 $pop 方法實作,該方法強制執行此限制。
doc.array = [1,2,3];
const popped = doc.array.$pop();
console.log(popped); // 3
console.log(doc.array); // [1,2]
// no affect
popped = doc.array.$pop();
console.log(doc.array); // [1,2]
doc.save(function (err) {
if (err) return handleError(err);
// we saved, now $pop works again
popped = doc.array.$pop();
console.log(popped); // 2
console.log(doc.array); // [1]
})
MongooseArray.prototype.$shift()
請參閱
每次文件 save()
最多原子性將陣列移位一次。
注意
在儲存之前對陣列多次調用此方法,會發送與調用一次相同的命令。 此更新是使用 MongoDB 的 $pop 方法實作,該方法強制執行此限制。
doc.array = [1,2,3];
const shifted = doc.array.$shift();
console.log(shifted); // 1
console.log(doc.array); // [2,3]
// no affect
shifted = doc.array.$shift();
console.log(doc.array); // [2,3]
doc.save(function (err) {
if (err) return handleError(err);
// we saved, now $shift works again
shifted = doc.array.$shift();
console.log(shifted ); // 2
console.log(doc.array); // [3]
})
MongooseArray.prototype.addToSet()
參數
[...args]
«any»
傳回
- «Array» 已新增的值
如果值尚未存在,則將其新增到陣列中。
範例
console.log(doc.array) // [2,3,4]
const added = doc.array.addToSet(4,5);
console.log(doc.array) // [2,3,4,5]
console.log(added) // [5]
MongooseArray.prototype.includes()
參數
obj
«Object» 要檢查的項目fromIndex
«Number»
傳回
- «Boolean»
傳回 obj
是否包含在陣列中。
MongooseArray.prototype.indexOf()
參數
obj
«Object» 要尋找的項目fromIndex
«Number»
傳回
- «Number»
傳回 obj
的索引,如果找不到則傳回 -1
。
MongooseArray.prototype.inspect()
console.log 的輔助工具
MongooseArray.prototype.nonAtomicPush()
參數
[...args]
«any»
MongooseArray.prototype.pop()
請參閱
MongooseArray.prototype.pull()
參數
[...args]
«any»
請參閱
原子性地從陣列中拉出項目。相等性是透過將提供的值轉換為嵌入式文件並使用 Document.equals()
函式進行比較來判定的。
範例
doc.array.pull(ObjectId)
doc.array.pull({ _id: 'someId' })
doc.array.pull(36)
doc.array.pull('tag 1', 'tag 2')
若要從子文件陣列中移除文件,我們可以傳遞一個帶有符合的 _id
的物件。
doc.subdocs.push({ _id: 4815162342 })
doc.subdocs.pull({ _id: 4815162342 }) // removed
或者,我們可以傳遞 _id 並讓 mongoose 處理。
doc.subdocs.push({ _id: 4815162342 })
doc.subdocs.pull(4815162342); // works
第一次拉取呼叫會在資料庫上產生原子操作,如果重複呼叫拉取而不儲存文件,則會改為在整個陣列上使用 $set 操作,覆寫這段時間在資料庫中發生的可能變更。
MongooseArray.prototype.push()
參數
[...args]
«Object»
使用正確的變更追蹤包裝 Array#push
。
範例
const schema = Schema({ nums: [Number] });
const Model = mongoose.model('Test', schema);
const doc = await Model.create({ nums: [3, 4] });
doc.nums.push(5); // Add 5 to the end of the array
await doc.save();
// You can also pass an object with `$each` as the
// first parameter to use MongoDB's `$position`
doc.nums.push({
$each: [1, 2],
$position: 0
});
doc.nums; // [1, 2, 3, 4, 5]
MongooseArray.prototype.remove()
請參閱
pull 的別名
MongooseArray.prototype.set()
傳回
- «Array» this
在索引 i
設定轉換後的 val
,並將陣列標記為已修改。
範例
// given documents based on the following
const Doc = mongoose.model('Doc', new Schema({ array: [Number] }));
const doc = new Doc({ array: [2,3,4] })
console.log(doc.array) // [2,3,4]
doc.array.set(1,"5");
console.log(doc.array); // [2,5,4] // properly cast to number
doc.save() // the change is saved
// VS not using array#set
doc.array[1] = "5";
console.log(doc.array); // [2,"5",4] // no casting
doc.save() // change is not saved
MongooseArray.prototype.shift()
使用正確的變更追蹤包裝 Array#shift
。
範例
doc.array = [2,3];
const res = doc.array.shift();
console.log(res) // 2
console.log(doc.array) // [3]
注意
將整個陣列標記為已修改,如果儲存,將其儲存為 $set
操作,可能會覆寫您檢索物件和儲存物件之間發生的任何變更。
MongooseArray.prototype.sort()
請參閱
MongooseArray.prototype.splice()
請參閱
MongooseArray.prototype.toObject()
參數
options
«Object»
傳回
- «Array»
傳回原生 js 陣列。