如何使用具有匹配属性的对象数组检索mongo文档

我有一个用户文档集合,每个文档都有一个嵌入式客户端。数组中的每个对象都有一个clientID。

我想在clients数组中使用一个client来检索用户文档,该client具有与传递的clientID匹配的clientID。

但是我遇到的所有示例都只是检索对象而不是返回文档。我想使用mgo库做到这一点

var results []model.Clients   
err := db.C("users").Find(nil).Select(bson.M{"clients": bson.M{"$elemMatch":q }}).All(&results)

以上仅返回一个客户数组。但是我想要一个用户数组。

[
    {
        "userID": "1",clients: [
            {
                "clientID": "12","data": {},"customers": [
                    "customerID": "0123","data": {

                    }
                ]
            },{
                "clientID": "123","data": {

                    }
                ]
            }
        ]
    },{
        "userID": "2",{
                "clientID": "13","data": {

                    }
                ]
            }
        ]
    }
]
zyp0374 回答:如何使用具有匹配属性的对象数组检索mongo文档

Query.Select()使您可以选择应检索结果的字段,而不是指定过滤条件。过滤条件应该传递给Collection.Find()

var results []model.User   
err := db.C("users").Find(bson.M{"clients": bson.M{"$elemMatch":q}}).All(&results)

您还可以使用"clients.clientID"clientID数组中指定clients

var results []model.User   
err := db.C("users").Find(bson.M{"clients.clientID": "12"}).All(&results)
本文链接:https://www.f2er.com/3137930.html

大家都在问