如何防止MongoDB查找文档时返回对象ID?

问题描述 投票:0回答:5

我在 MongoDB 中有以下文档...

{
  "_id" : ObjectId("531221cd960100960116b992"),
  "username : "joe",
  "address" : [
    {
      "zip" : "8000",
      "city" : "Zurich"
    },
    {
      "zip" : "6900",
      "city" : "Lugano"
    }
  ]
}

...并检索第二个地址,我使用以下语句:

db.users.find({ _id: ObjectId("531221cd960100960116b992") }, { addresses: { $slice: [0, 1] } } )

这有效,但它还返回对象 id:

{ "addresses" : [ { "zip" : "6900", "city" : "Lugano" } ], "_id" : ObjectId("531221cd960100960116b992") }

如何防止 MongoDB 返回对象 id?我知道我应该提供像

_id : 0
这样的投影...但是我应该将它放在上面的表达式中的哪里?我做了很多尝试...但没有成功。

谢谢。

mongodb mongodb-query
5个回答
26
投票

{'_id': False}
作为参数传递给
find()

db.users.find({ _id: ObjectId("531221cd960100960116b992")}, { addresses: { $slice: [0, 1] } ,'_id': False} )

18
投票

这与 @hanleyhansen 的答案完全相同,但只是为了让您知道您可以将 0 与 false 互换使用,例如:

db.users.find(
  { _id: ObjectId("531221cd960100960116b992")},
  { addresses: { $slice: [0, 1] } ,'_id': 0}
)

4
投票

使用此代码

 db.yourCollectionName.find({},{_id:0})

0
投票

对于任何使用字符串值来限制返回数据的人 - 只需传递

-_id
作为选项之一:

User.find(
    { name: "John Doe" },
    "name photo bio -_id", // <-- "-_id"
    { limit: 25 },
    function (err, users) {
      return res.status(200).send({
        success: true,
        users,
      });
    }
  );

0
投票

如果您不想为对象内部的地址显式创建 id。然后你可以创建一个名为“Models”的文件夹,然后导出该文件夹中的 JavaScript 文件并将 _id 的默认值设置为 false,然后就完成了: const userSchema = 新架构({ 用户名:字符串, 地址:[ { _id:假, 位置:字符串, 城市: 字符串, } ] });

© www.soinside.com 2019 - 2024. All rights reserved.