我 将MongoDB查询转换为mgo bson有困难。 Mongo记录架构如下所示。我想查找包含主题为“教育”和“学生”的记录。
db.questions.insert
(
{
"_id" : ObjectId("5cb4048478163fa3c9726fdf"),
"questionText" : "why?",
"createdOn" : new Date(),
"createdBy": user1,
"topics" : [
{
"label": "Education",
},
{
"label": "Life and Living",
},
{
"label": "Students"
}
]
}
)
使用Robo 3T,查询如下:
db.questions.find({$and : [
{"topics": {"label": "Students"}},
{"topics": {"label": "Education"}}
]})
我在使用MGO进行建模时遇到麻烦。目前,已经尝试过:
map[$and:[
map[topics:map[label:students]]
map[topics:map[label:life and living]]
]]
还有这个
map[topics:map[$and:[
map[label:students]
map[label:life and living]
]]]
答案 0 :(得分:0)
如果要从嵌套数组中找到一些值,请使用$ elemMatch方法。
db.questions.find(
{$and:
[
{topics: {$elemMatch: {label: 'Students'}}},
{topics: {$elemMatch: {label: 'Education'}}}
]
}
)
答案 1 :(得分:0)
上述答案的bson模型如下:
query = getAndFilters(
bson.M{"topics": bson.M{"$elemMatch": bson.M{"label": "Students"}}},
bson.M{"topics": bson.M{"$elemMatch": bson.M{"label": "Education"}}})