繁体   English   中英

MongoDB 投影语法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM