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
文档中没有明确说明,但是 "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 }
});
我正在尝试 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
文档中没有明确说明,但是 "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 }
});