1

有没有一种方法可以在 MongoDB 中插入不包含某些属性的新文档?

例如,假设我想插入一个如下所示的文档:

{
    'f_name': 'Jim',
    'l_name': 'Jones',
    'age': 21,
    'country': 'UK',
    ...etc...
}

但我只想在包含的文档中插入文档

{
    'f_name': 'Jim',
    'l_name': 'Jones'
}

不存在。有没有一种方法可以在单个操作中执行此操作(例如,像 upsert,但如果存在则不修改任何现有的匹配文档),还是必须在两个单独的操作中完成(查找以查看是否存在,然后插入)?

这并不重要,但了解它会非常有用,并且可以节省大量时间!

4

1 回答 1

1

您可以使用以下两个选项之一:

  • 复合唯一索引
  • 像这样的更新:

    db.col.update({f_name: 'Jim', l_name: 'Jones'}, {//your doc here}, {upsert: true})

这将基本上搜索这些字段已经具有这些值和更新的文档(您可以使用相同的值更新字段)或者如果查找条件不返回结果则插入。

最后一次尝试是使用两个查询,但是上面的 upsert 应该可以很好地工作。

于 2012-10-15T13:01:57.873 回答