golang mongo-go-driver 查找数组中部分数据

2020-01-08 18:57:45 +08:00
 crimeshaper
数据结构如下,我想查找 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),效果也一样啊
1388 次点击
所在节点    问与答
3 条回复
limboMu
2020-01-09 13:48:27 +08:00
elemMatch => all ?
limboMu
2020-01-09 13:58:58 +08:00
@limboMu 刚刚理解错意思了,Aggregate 可以使用 addToSet
limboMu
2020-01-09 14:04:25 +08:00
@limboMu 完了自己缺心眼了(已经习惯了),题去看看 mongo Aggregate 文档的 $filter 吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/636254

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX