我正在使用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
属性的信息吗?或者这是一个由于某种原因仍在工作的弃用?
2条答案
按热度按时间gab6jxml1#
shell findOne方法的文档如下:https://docs.mongodb.com/manual/reference/method/db.collection.findOne/
投影是第二个位置参数,您将其作为不正确的选项散列发送。
rqmkfv5c2#