数组
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» 此
将转换后的 val
设置为索引 i
处,并将数组标记为已修改。
示例
// 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 数组。