Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何检索具有匹配属性的对象数组的mongo文档_Mongodb_Go_Mgo - Fatal编程技术网

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

Mongodb 如何检索具有匹配属性的对象数组的mongo文档,mongodb,go,mgo,Mongodb,Go,Mgo,我有一个用户文档集合,每个文档都有一个嵌入式客户端数组。数组中的每个对象都有一个clientID 我想用客户机数组中的客户机检索用户文档,该客户机的clientID与传递的clientID匹配 但是我遇到的所有示例都只是检索对象,而不是返回文档。我想用mgo库来做这件事 var results []model.Clients err := db.C("users").Find(nil).Select(bson.M{"clients": bson.M{"$elemMatch":q }}).A

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

我想用客户机数组中的客户机检索用户文档,该客户机的clientID与传递的clientID匹配

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

var results []model.Clients   
err := db.C("users").Find(nil).Select(bson.M{"clients": bson.M{"$elemMatch":q }}).All(&results)
上面只返回一个clients数组。但我想要一个用户阵列

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

                    }
                ]
            },
            {
                "clientID": "123",
                "data": {},
                "customers": [
                    "customerID": "0123",
                    "data": {

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

                    }
                ]
            },
            {
                "clientID": "13",
                "data": {},
                "customers": [
                    "customerID": "0123",
                    "data": {

                    }
                ]
            }
        ]
    }
]
允许选择应检索结果的字段,而不是指定筛选条件。筛选标准应传递给

您还可以使用
“clients.clientID”
客户机
数组中指定
客户ID

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

抱歉,我想获取用户文档,而不是客户端。我的代码不正确。我想要一个替代方案。@pro抱歉,复制粘贴错误。我的回答显示了如何获取用户文档(而不是客户端)。
var results []model.User   
err := db.C("users").Find(bson.M{"clients.clientID": "12"}).All(&results)