如何检索一个数组中的所有文档,除了一个包含MongoDB中特定值字段的文档之外?
我想找到的位置不是如何检索一个数组中的所有文档,除了一个包含MongoDB中特定值字段的文档之外?,mongodb,mongodb-query,Mongodb,Mongodb Query,我想找到的位置不是vname:“vij” 我的结果可能是 db.sample.find(): {_id:1, locations: [{vname: "edd", distr: "prakasam"}, {vname: "vij", distr: "krishna"}, {vname: "kakani", distr: "guntur"}]}; 我尝试了以下问题,但帮不了我 {_id: 1, locations: [{vname: "edd", distr: "prakasam"}, {vn
vname:“vij”
我的结果可能是
db.sample.find():
{_id:1, locations: [{vname: "edd", distr: "prakasam"}, {vname: "vij", distr: "krishna"}, {vname: "kakani", distr: "guntur"}]};
我尝试了以下问题,但帮不了我
{_id: 1, locations: [{vname: "edd", distr: "prakasam"}, {vname: "kakani", distr: "guntur"}]};
它正在返回整个文档,但我需要排除此文档
任何帮助都是值得的。试试以下方法:
db.sample.find({'locations.$.vname': {$ne: 'vij'}})
试试这个:
db.sample.find({'locations.$.vname': {$ne: 'vij'}})
由于
位置
是模式中的对象数组,因此不能从结果中排除特定对象。您可以从结果中排除整个位置
字段。但是,您可以选择在集合上运行聚合
> db.sample.find({"locations.vname": {$ne: "vij"}})
这将以这种形式返回数据
db.sample.aggregate([
{
"$match" :{"_id":1}
},
{
"$unwind" :"$locations"
},
{
"$match" :{
"locations.vname":{"$ne": "vij"}
}
}
])
由于
位置
是模式中的对象数组,因此不能从结果中排除特定对象。您可以从结果中排除整个位置
字段。但是,您可以选择在集合上运行聚合
> db.sample.find({"locations.vname": {$ne: "vij"}})
这将以这种形式返回数据
db.sample.aggregate([
{
"$match" :{"_id":1}
},
{
"$unwind" :"$locations"
},
{
"$match" :{
"locations.vname":{"$ne": "vij"}
}
}
])
使用
$redact
$$PRUNE
当位置
数组匹配vname
asvij
{ "_id" : 1, "locations" : { "vname" : "edd", "distr" : "prakasam" } }
{ "_id" : 1, "locations" : { "vname" : "kakani", "distr" : "guntur" } }
使用
$redact
$$PRUNE
当位置
数组匹配vname
asvij
{ "_id" : 1, "locations" : { "vname" : "edd", "distr" : "prakasam" } }
{ "_id" : 1, "locations" : { "vname" : "kakani", "distr" : "guntur" } }
没有工作,我试过了。只是从我的mongo shell-works。你的MongoDB版本是什么?您使用的是shell吗?版本3.2.6,我在windows中使用cmd提示符。尝试启动Mongo shell并在shell中执行相同的操作。只需在CMDO中键入mongo谢谢您的时间,我尝试了您所说的方式,但未能成功。在另一条评论中获得了解决方案。:)没有工作,我试过了。只是从我的mongo shell-works。你的MongoDB版本是什么?您使用的是shell吗?版本3.2.6,我在windows中使用cmd提示符。尝试启动Mongo shell并在shell中执行相同的操作。只需在CMDO中键入mongo谢谢您的时间,我尝试了您所说的方式,但未能成功。在另一条评论中获得了解决方案。:)这很好,但是我需要文章中提到的输出。“位置”字段类型也在改变,而不是数组,它正在成为一个对象/文档。你能帮我用那种格式吗。谢谢。这很好,但我需要文章中提到的输出。“位置”字段类型也在改变,而不是数组,它正在成为一个对象/文档。你能帮我用那种格式吗。谢谢,很好!我不知道“$redact”太棒了,它真的帮了我很多。谢谢,很好!我不知道“$redact”太棒了,它真的帮了我很多。非常感谢。