MGO查询嵌套的对象数组

时间:2019-04-23 06:40:16

标签: mongodb go mgo

我  将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]
]]]

2 个答案:

答案 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"}}})