我无法只从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();
});
答案 0 :(得分:3)
参考文献。 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();
});
答案 1 :(得分:1)
好像你正在使用mongodb nodejs驱动程序的函数findAndModify
。 options
对象不是用于投影,而是用于函数的行为
选项对象可用于以下选项:
remove - 如果设置为true(默认为false),则从集合中删除记录。回调函数仍然获取对象,但它不再存在于集合中。
new - 如果设置为true,则回调函数返回修改后的记录。默认值为false(返回原始记录)
upsert - 如果设置为true且没有与查询匹配的记录,则替换对象将作为新记录插入
即使函数findAndModify
与mongo shell函数共享相同的名称,它的行为也可能不同。您应该在这里查看文档(https://mongodb.github.io/node-mongodb-native/markdown-docs/insert.html#find-and-modify)