我在 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
这样的投影...但是我应该将它放在上面的表达式中的哪里?我做了很多尝试...但没有成功。
谢谢。
将
{'_id': False}
作为参数传递给 find()
db.users.find({ _id: ObjectId("531221cd960100960116b992")}, { addresses: { $slice: [0, 1] } ,'_id': False} )
这与 @hanleyhansen 的答案完全相同,但只是为了让您知道您可以将 0 与 false 互换使用,例如:
db.users.find(
{ _id: ObjectId("531221cd960100960116b992")},
{ addresses: { $slice: [0, 1] } ,'_id': 0}
)
使用此代码
db.yourCollectionName.find({},{_id: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,
});
}
);
如果您不想为对象内部的地址显式创建 id。然后你可以创建一个名为“Models”的文件夹,然后导出该文件夹中的 JavaScript 文件并将 _id 的默认值设置为 false,然后就完成了: const userSchema = 新架构({ 用户名:字符串, 地址:[ { _id:假, 位置:字符串, 城市: 字符串, } ] });