Mongodb 如何检索具有匹配属性的对象数组的mongo文档
我有一个用户文档集合,每个文档都有一个嵌入式客户端数组。数组中的每个对象都有一个clientID 我想用客户机数组中的客户机检索用户文档,该客户机的clientID与传递的clientID匹配 但是我遇到的所有示例都只是检索对象,而不是返回文档。我想用mgo库来做这件事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
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)