我有一个子文档中的数组,像这样。
我能过滤子文档,只展示大于3的吗?
我的期望结果如下:
我尝试使用
我的查询:
结果返回数组中的一个元素。
我尝试使用
它会返回数组中的所有元素。
我可以筛选数组中的元素,以获得预期的结果吗?
{
"_id" : ObjectId("512e28984815cbfcb21646a7"),
"list" : [
{
"a" : 1
},
{
"a" : 2
},
{
"a" : 3
},
{
"a" : 4
},
{
"a" : 5
}
]
}
我能过滤子文档,只展示大于3的吗?
我的期望结果如下:
{
"_id" : ObjectId("512e28984815cbfcb21646a7"),
"list" : [
{
"a" : 4
},
{
"a" : 5
}
]
}
我尝试使用
$elemMatch
,但返回数组中第一个匹配的元素。我的查询:
db.test.find( { _id" : ObjectId("512e28984815cbfcb21646a7") }, {
list: {
$elemMatch:
{ a: { $gt:3 }
}
}
} )
结果返回数组中的一个元素。
{ "_id" : ObjectId("512e28984815cbfcb21646a7"), "list" : [ { "a" : 4 } ] }
我尝试使用
$match
和聚合函数,但不起作用。db.test.aggregate({$match:{_id:ObjectId("512e28984815cbfcb21646a7"), 'list.a':{$gte:5} }})
它会返回数组中的所有元素。
{
"_id" : ObjectId("512e28984815cbfcb21646a7"),
"list" : [
{
"a" : 1
},
{
"a" : 2
},
{
"a" : 3
},
{
"a" : 4
},
{
"a" : 5
}
]
}
我可以筛选数组中的元素,以获得预期的结果吗?
aggregate
操作不会影响文档本身。 - JohnnyHK