MongoDB获取数组中元素$的值

时间:2013-11-10 21:25:03

标签: mongodb mongoose

我正在尝试更新MongoDB中的文档,或者如果它们不存在则创建它们。例如(我在节点中使用mongoose,但我认为它在MongoDB中应该看起来非常相似)

some_model.update({some_field: { $in: ['foo1','foo2'] } ,
                  { $setOnInsert :  { bar : 'NEW'} },
                  { multi : true, upsert : true });

如果我的文档中没有包含some_field和该元素的值,或者我需要为此运行多个查询,是否可以用上面数组的元素替换'NEW'?

1 个答案:

答案 0 :(得分:0)

只有在为update语句提供{upsert:true}选项时才能插入单个文档。因为在您的情况下,您想要更新所有匹配的文档或为您测试的每个元素插入一个,您可以做的是:

使用元素列表运行常规更新,然后在检查更新了多少文档时,如果它为0,则迭代元素列表,重新运行每个元素的更新作为upsert。这是为了使其线程安全,以防其他线程同时进行相同的更新。