在nodejs mongodb驱动程序中查找findAndModify查询

我无法只从findAndModify查询项目只需要项目,它是返回整个文档。

var MongoClient = require('mongodb').MongoClient; db.collection("conf").findAndModify( searchDoc, sortDoc, {$set: updateDoc}, {new: true}, {"required_field": 1}, function (error, obj) { console.log(obj["value"]); db.close(); }); 

裁判。 https://mongodb.github.io/node-mongodb-native/markdown-docs/insert.html#find-and-modify

裁判。 https://github.com/mongodb/node-mongodb-native/blob/V2.1.3/lib/collection.js#L2319

 collection.findAndModify(criteria[, sort[, update[, options]]], callback) 

optons是键值对。 它需要字段名称。 尝试下面。

 var MongoClient = require('mongodb').MongoClient; db.collection("conf").findAndModify( searchDoc, // criteria sortDoc, // sort {$set: updateDoc}, // update { // options new: true, fields: {"required_field": 1} }, function (error, obj) { console.log(obj["value"]); db.close(); }); 

好像你正在使用函数findAndModify的mongodb nodejs驱动程序。 该options对象不是用于投影,而是用于该function的行为

选项对象可用于以下选项:

删除 – 如果设置为true(默认为false),则从集合中删除logging。 callback函数仍然获取对象,但它不再存在于集合中。

新 – 如果设置为true,callback函数返回修改的logging。 默认值为false(返回原始logging)

upsert – 如果设置为true,且没有与查询匹配的logging,则replace对象作为新logging插入

即使通过函数findAndModify与mongo shell的函数共享相同的名称,它可能会有不同的行为。您应该在这里检查文档( https://mongodb.github.io/node-mongodb-native/markdown-docs/insert。 html#查找和修改 )