这个mongoDB行动能否更有效率?

时间:2013-12-03 15:57:27

标签: node.js mongodb

我有一个看起来像的集合:

[
  {
    'job': builder,
    'name': bob
  },
  {
    'job': doctor,
    'name': bob
  },
  {
    'job': builder,
    'name': james
  },
  {
    'job': lawyer,
    'name': james
  },
  ...
]

我还有一个数组,其中作业总是相同的,例如:

[
  {
    'job': builder,
    'name': jack
  },
  {
    'job': builder,
    'name': john
  },
  ...
]

我想替换我的集合中作业所在的所有对象。为此,我目前正在使用两个单独的查询。

mycollection.remove({'job': builder})
mycollection.insert(new_job_array);

有没有办法将其合并为一个查询?

2 个答案:

答案 0 :(得分:0)

您可以使用update命令。

mycollection.update({'job':'builder'}, {new document}, {multi:true})

此处提供更多信息:MongoDB update

答案 1 :(得分:0)

最终结果是,不,没有一个操作可以做到这一点。需要2个步骤,它应该使用真正的回调。

mycollection.remove({'job': builder}, function(err){
  if ( err ) handle();
  else mycollection.insert(new_job_array);
});