MongoDB忽略upsert上的<query>

时间:2018-02-11 23:55:27

标签: node.js mongodb node-mongodb-native

我正在尝试使用主节点驱动程序将文档插入MongoDB。我希望按_id进行查询,如果_id不存在,则创建一个包含普通ObjectId的新文档。但是,来自MongoDB文档:

  

更新根据query参数中的equality子句创建基本文档,然后应用update参数中的更新表达式。

https://docs.mongodb.com/manual/reference/method/db.collection.update/#upsert-behavior

意味着它会尝试使用我在查询部分中将_id与之比较的任何内容作为文档的新ID。问题是,如果文档尚不存在,我将_idnull进行比较,因此在创建新文档时,它会将_id设置为{{1} }}。有没有办法避免这种行为?我希望通过null进行查询,但不要在upsert中使用我比较的任何内容。到目前为止,这是我的代码:

_id

此处,dbm.collection('orders').findOneAndUpdate( { _id: order._id }, { $set: order, $setOnInsert: {_id: ObjectId()}//tried with and without this }, { upsert: true, returnOriginal: false }).then().catch() 是一个包含少量字段的对象。为了我的目的,我需要通过_id查询,而不是其他索引字段。

0 个答案:

没有答案