这是一个创建于 1787 天前的主题,其中的信息可能已经有所发展或是发生改变。
数据结构如下,我想查找 Age 大于 800 的,但返回的总是 Hero 这个全集,各位大佬,这怎么写,我快疯了,难道要查出来再代码过滤一遍
{
"_id" : ObjectId("5e130585a10ebd71287d86a2"),
"item" : "journal",
"qty" : 25,
"Hero" : [
{
"Name" : "张三",
"Age" : 819
},
{
"Name" : "王兀",
"Age" : 888
},
{
"Name" : "刘备",
"Age" : 9
},
{
"Name" : "孙尚香",
"Age" : 78
}
]
}
查找代码如下:
find := coll.FindOne(
context.Background(),
bson.M{
"Hero":bson.M{
"$elemMatch":bson.M{
"Age":bson.M{
"$gt":800,
},
},
},
})
var info bson.M
e1 := find.Decode(&info)
------------------------------------
返回的是 Hero 全集,试过 coll.Aggregate(ctx,pipe),效果也一样啊
3 条回复 • 2020-01-09 14:04:25 +08:00
|
|
1
limboMu 2020-01-09 13:48:27 +08:00
elemMatch => all ?
|
|
|
2
limboMu 2020-01-09 13:58:58 +08:00
@ limboMu 刚刚理解错意思了,Aggregate 可以使用 addToSet
|
|
|
3
limboMu 2020-01-09 14:04:25 +08:00
@ limboMu 完了自己缺心眼了(已经习惯了),题去看看 mongo Aggregate 文档的 $filter 吧
|