Mongodb没有返回特定字段

时间:2015-09-29 23:59:52

标签: node.js mongodb mongoskin co-monk

我正在尝试从文档中只返回一个字段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

我目前正在使用基于co-monkmongoskin。所以它应该有用。

2 个答案:

答案 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 }
});

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