假设我有一个包含大量文档的mongo数据库:
{
key: 'somekey',
events: [
{event_id: '001', event_info: 'blah'},
{event_id: '001', event_info: 'blah'},
...etc
]
}
我想在文档的事件列表中添加一个新事件,其中key =' X'但仅当该事件(由event_id标识)尚未出现时才会出现。
我试过了:
collection.update({
'key': newKeyValue,
$not { events.event_id: newEventId }
},
{
'$push': { 'events': newEvent }
},
{
'upsert': true
});
但我收到错误:" MongoError:未知的顶级操作员:$ not"。
我该如何做出这样的否定?
另请注意:我希望能够在一次原子操作中执行此操作。我知道我可以通过多个查询来完成它,但是如果我以后想要使用批量操作来设置它,那就无法工作。
答案 0 :(得分:0)
您的查询错误请尝试以下查询
collection.update({
'key': newKeyValue,
events.event_id: { $not:{$eq: newEventId }}
},
{
'$push': { 'events': newEvent }
},
{
'upsert': true
});
$ not用于查询上述字段
这可以解决您的问题