如何从MongoDB中自动拉取或初始化并清空数组?

时间:2014-11-26 08:15:21

标签: mongodb mongodb-query

有没有办法初始化一个数组,如果它不存在,同时如果它在一个单一的原子操作中存在的同时从中拉出它?

这是我到目前为止所尝试的:

考虑一个像这样的潜在文件:

{ _id: 1, foo: [1, 2, 3] }

如果我想从2删除元素foo,我可以写:

db.col.update({ _id: 1 }, { $pull: { foo: 2 } })

如果我不确定文档{ _id: 1 }是否存在,并且在这种情况下想要同时创建它,我可以使用{ upsert: true }展开上述查询:

db.col.update({ _id: 1 }, { $pull: { foo: 2 } }, { upsert: true })

但这会创建以下没有foo属性的文档:

{ _id: 1 }

如果我想初始化一个空的foo数组,您认为我可以这样做:

db.col.update({ _id: 1 }, { $pull: { foo: 2 }, $setOnInsert: { foo: [] } }, { upsert: true })

但遗憾的是会出现以下错误:

MongoError: Cannot update 'foo' and 'foo' at the same time

0 个答案:

没有答案