没有条件的Mongoose findOneAndUpdate()更新最后创build的文档

我在一个完整的AJAX客户端表单上工作,如果这个post不包含客户端ID,它将创build一个新的MongoDB条目,如果有一个ID,它会更新条目。

我正在尝试使用mongoose的findOneAndUpdate()像这样:

exports.post = function ( req, res ) { var payload = req.body, condition = payload._id ? { _id: payload._id } : null, query = {} query[ payload.fieldName ] = payload.value Client.findAndUpdate( condition, query, { upsert: true }, function ( err, client ) { var response = { success: true, message: null, client: client } if ( err ) { console.error( err ) results.success = false results.message = err } res.json( response ) }) } 

我的问题是,如果条件为空或{},它会find最后创build的条目并更新该条目,而不是创build一个新条目,

我如何达到我想要的行为? 如果其他,并使用2种不同的mongoose方法基于ID的可用性?

如果用空或空文档查询,它将返回所有文档的列表,例如相当于db.collection.find(null)和db.collection.find({})的db.collection.find()

只是更新condition = payload._id ? { _id: payload._id } : null, condition = payload._id ? { _id: payload._id } : null,

 condition = payload._id ? { _id: payload._id } : {_id:{"$exists":false}}, 

希望它会有所帮助