我正在尝试从文档中只返回一个字段sessions
。
我正在使用当前查询(它返回整个文档):
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
答案 0 :(得分:5)
文档中没有明确说明,但“options”对象有一个明确的键名称语法:
yield users.findOne({ '_id': id }, { 'fields': { '_id': 0, 'sessions': 1 }});
因此它与MongoDB shell API的工作方式略有不同。这同样适用于其他选项,例如sort
。
答案 1 :(得分:1)
在我的情况下,接受的答案不起作用,因此我仔细研究了文档,这是我在以下字段选项中发现的:已弃用Use options.projection ,并获得了相应的答案控制台中的警告。与 .find()一样,在 .project()中进行链接在我的情况下不适用于 .findOne(),因此必须在使用投影的选项中:
yield users.findOne({
'_id': id
}, { projection: { //projection rather than fields
'_id': 0,
'sessions': 1 }
});