MongoDB投影语法

xe55xuns  于 2023-06-29  发布在  Go
关注(0)|答案(2)|浏览(71)

我正在使用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属性的信息吗?或者这是一个由于某种原因仍在工作的弃用?

gab6jxml

gab6jxml1#

shell findOne方法的文档如下:https://docs.mongodb.com/manual/reference/method/db.collection.findOne/
投影是第二个位置参数,您将其作为不正确的选项散列发送。

rqmkfv5c

rqmkfv5c2#

Photo.find({},{ book_id: 1, user_id: 1,  datetime: 1, userAgent: 1, createdAt: 1 })

相关问题