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

j3d*_*j3d 12 mongodb mongodb-query

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

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

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

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

这工作除了它还返回对象ID:

{ "addresses" : [ { "zip" : "6900", "city" : "Lugano" } ], "_id" : ObjectId("531221cd960100960116b992") }
Run Code Online (Sandbox Code Playgroud)

如何防止MongoDB返回对象ID?我知道我应该提供一个类似的投影_id : 0......但我应该把它放在上面的表达式中?我做了很多尝试......但没有成功.

谢谢.

han*_*sen 9

通过

{'_id': false}
Run Code Online (Sandbox Code Playgroud)

作为参数来 find()

db.users.find({ _id: ObjectId("531221cd960100960116b992")}, { addresses: { $slice: [0, 1] } ,'_id': false} )
Run Code Online (Sandbox Code Playgroud)


Ana*_*lan 9

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

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