如何获取刚刚在mongodb中插入的文件?

时间:2014-10-01 14:29:58

标签: javascript node.js mongodb

在以下命令中,foos是一个集合,我“upsert”一个新项目:

foos.update(criteria, 
  { $set: fooUpdate }, 
  { w: 1, upsert: true }, 
  function(err, upsertedFoo) {
    /* upsertedFoo is actually just count of updated/ inserted rows */
}

我想获取刚创建的新文档(如果是更新),或者修改的现有文档(如果已更新)。如果无法做到这一点,那么_id就足够了。

我怎么能得到这个?

注意:我使用的是标准mongodb包。

3 个答案:

答案 0 :(得分:0)

update函数的回调将为您提供更新的文档。例如:

foo.update(conditions, document, options, function(err, result) {
  if (err)
   throw new Error(err);
  console.dir(result);
}

答案 1 :(得分:0)

如果将findAndModify与new:true一起使用,您将获得更新或新对象的结果,它适用于upsert。

http://docs.mongodb.org/manual/reference/method/db.collection.findAndModify/#return-new-document

答案 2 :(得分:0)

我在docs上找到了这个:

// Simple findAndModify command performing an upsert and returning the new document
// executing the command safely
collection.findAndModify({d:1}, [['b', 1]],
  {d:1, f:1}, {new:true, upsert:true, w:1}, function(err, doc) {
    assert.equal(null, err);
    assert.equal(1, doc.d);
    assert.equal(1, doc.f);
     db.close();
})

这个'新'选项似乎是关键:

{布尔值,默认值:false}

如果要返回修改后的对象而不是原始对象,请将

设置为true。忽略删除。

希望这有帮助