Mongodb 不返回特定字段

Mongodb not returning specific fields

我正在尝试 return 文档中只有一个字段 sessions

我正在使用当前查询(它 return 是整个文档):

yield users.findOne({
    '_id': id // var id holds object id ObjectId("560ae1dc53cb3222679430f1")
}, {
    '_id': 0, // <--- being ignored
    'sessions': 1 // <--- being ignored
});

我在 mongo shell 中尝试过,它应该可以正常工作:

db.users.find({"_id":ObjectId("560ae1dc53cb3222679430f1")},{"sessions":1,"_id":0}).pretty() // <--- works

我目前正在使用 co-monk which is based off of mongoskin。所以它应该可以工作。

文档中没有明确说明,但是 "options" 对象有明确的键名语法:

yield users.findOne({ '_id': id }, { 'fields': { '_id': 0, 'sessions': 1  }});

所以它的工作方式与 MongoDB shell API 有点不同。这同样适用于其他选项,例如 sort.

已接受的答案在我的案例中不起作用,所以我仔细研究了文档,这是我为字段选项找到的:已弃用,改为使用 options.projection,并在控制台中收到相应的警告。 .project().find() 的链接不适用于 .findOne() 在我的例子中,所以它必须在使用投影的选项中:

yield users.findOne({
    '_id': id 
}, { projection: { //projection rather than fields
    '_id': 0,
    'sessions': 1 }
});

这里是:mongodb.github.io/node-mongodb-native