0
我是新来的MongoDB和猫鼬。带有ObjectId数组的文档 - 推送值(如果存在),删除否则删除
所以我的模型拥有许多领域,在他们之中是的ObjectID
数组var modelSchema = new Schema({
//...
inner_array: [Schema.Types.ObjectId],
//...
});
我想要实现我的查询是:
查找模型通过它的ID,
如果内部数组包含特定值,则将其从数组中移除。
如果该值是不是inner_array内,将其推
var target_id = // document id
var inner_object_id = // value to push
models.MyModel.findOne(
{_id: target_id},
function (err, model) {
// IN THIS SCOPE 'INNER_OBJECT_ID' IS UNDEFINED
// if model.inner_array contains 'inner_object_id', remove it
// otherwise, push 'inner_object_id' into model.inner_array
model.save();
res.json(model); // return modified document to client
}
);
我相信这可以在一个单一的findOneAndUpdate写,但我不能找出语法..
非常感谢!
有与做这种方式,在回调函数一个问题 - “inner_object_id”变量是不确定的。它被定义之前 – Moka
好吧,我似乎已经通过使用.bind() – Moka
变量很高兴我可以帮助。 –