[英]MongoDB projection syntax
我正在使用 NodeJs 编写一个 web 应用程序,我用来投影字段的最常用语法是:
db().collection("users").findOne(
{ name: "Igor" },
{ projection: { name: true, _id: false } }
);
它在 NodeJs 环境中运行良好。 但是后来我通过 shell 做了一些检查,同样的查询返回了一个错误:
//query
db.users.findOne({ name: "Igor" },{ projection:{ name: true, _id: false }})
//output
Error: error: {
"ok" : 0,
"errmsg" : "Cannot do exclusion on field _id in inclusion projection",
"code" : 31254,
"codeName" : "Location31254"
}
然后,我试图找到对{projection: <field>: <true or false>}
的引用,但没有成功。 我也没有更好的运气来研究错误。 然后我认为它可能是 NodeJs 驱动程序中的一个方法,但我也没有在文档中找到任何内容。
另一种行为是,当我尝试将名称投射到 mongo shell 上时,结果只是文档_id
。
//query
db.users.findOne({ name: "Igor" },{ projection:{ name: true }})
//output
{ "_id" : ObjectId("607469840eaf9097e49c10c3") }
为了清楚预期的结果是什么,我将通过编写以下查询来实现该结果:
db.users.findOne({name: "Igor"},{ name: true, _id: false })
有人可以启发我在哪里可以阅读有关此projection
属性的更多信息吗? 或者这是一个由于某种原因仍然有效的已弃用的?
shell findOne 方法记录在这里: https://docs.mongodb.com/manual/reference/method/db.collection.findOne
投影是第二个位置参数,您将其作为选项 hash 发送,这是不正确的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.