如何在Go和mgo中使用mongodb投影?

芳纶

我目前正在尝试在mongodb内部的文档数组中提取单个对象。这是一个样本数据集:

"_id" : ObjectId("564aae61e0c4e5dddb07343b"),
"name" : "The Races",
"description" : "Horse races",
"capacity" : 0,
"open" : true,
"type" : 0,
"races" : [
    {
        "_id" : ObjectId("564ab9097628ba2c6ec54423"),
        "race" : {
            "distance" : 3000,
            "user" : {
                "_id" : ObjectId("5648bdbe7628ba189e011b18"),
                "status" : 1,
                "lastName" : "Miranda",
                "firstName" : "Aramys"
            }
        }
    },
    {
        "_id" : ObjectId("564ab9847628ba2c81f2f34a"),
        "bet" : {
            "distance" : 3000,
            "user" : {
                "_id" : ObjectId("5648bdbe7628ba189e011b18"),
                "status" : 1,
                "lastName" : "Miranda",
                "firstName" : "Aramys"
            }
        }
    },{...}
]

我可以在mongo中使用以下命令成功查询:

db.tracks.find({"_id": ObjectId("564aae61e0c4e5dddb07343b")}, {"races": { $elemMatch: {"_id": ObjectId("564ab9847628ba2c81f2f34a")}}}).pretty()

我无法使用mgo进行相同操作,并尝试了以下操作:

使用嵌套(抛出:合成文字中缺少类型,地图文字中缺少键)

// Using nesting (Throws: missing type in composite literal, missing key in map literal)
c.Find(bson.M{{"_id": bson.ObjectIdHex(p.ByName("id"))}, bson.M{"races": bson.M{"$elemMatch": bson.M{"_id": bson.ObjectIdHex(p.ByName("raceId"))}}}}).One(&result)

// Using select (Returns empty)
c.Find(bson.M{"_id": bson.ObjectIdHex(p.ByName("id"))}).Select(bson.M{"races._id": bson.ObjectIdHex(p.ByName("raceId"))}).One(&result)

//As an array (Returns empty)
c.Find([]bson.M{{"_id": bson.ObjectIdHex(p.ByName("id"))}, bson.M{"races": bson.M{"$elemMatch": bson.M{"_id": bson.ObjectIdHex(p.ByName("raceId"))}}}}).One(&result)

我正在使用httprouter,p.ByName(“ ...”)调用是传递给处理程序的参数。

提前致谢。

克列丹

Select它将与该方法一起使用,因为doc指出,这使得可以选择要为找到的结果检索哪些字段,因此$elemMatch可以在此处与结合使用using运算符进行投影Select,最终查询如下所示:

c.Find(bson.M{
    "_id": bson.ObjectIdHex(p.ByName("id"))
}).Select(bson.M{
    "races": bson.M{
        "$elemMatch": bson.M{
            "_id": bson.ObjectIdHex(p.ByName("raceId"))
        }
    }
}).One(&result)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用mgo和Go查询日期范围的MongoDB?

来自分类Dev

如何在MongoDB中使用条件进行投影?

来自分类Dev

使用Go和mgo解析MongoDB结果

来自分类Dev

如何在mgo中使用$ pushAll

来自分类Dev

如何在Spring Data MongoDB存储库的查询方法中使用投影类型?

来自分类Dev

如何在Hibernate中使用总和投影和group by选择多列

来自分类Dev

在 Mongodb 投影中使用 toString()

来自分类Dev

如何在 Express 和 MongoDB 中使用异步和等待

来自分类Dev

如何在mongodb中结合投影和分页?

来自分类Dev

如何在mongodb中结合投影和分页?

来自分类Dev

mongodb如何在单查询中使用push和pull

来自分类Dev

如何在 Yii2 中使用 DbQueryDependency 和 mongodb

来自分类Dev

如何在方法参数中使用泛型类型投影?

来自分类Dev

如何在密码投影中使用Louvain算法?

来自分类Dev

如何在“投影和顺序”中使用“标准”?

来自分类Dev

如何在 Tensorflow 2.0 中使用嵌入投影仪

来自分类Dev

使用go和mgo读取mongodump输出

来自分类Dev

如何在mongodb集合中存储纬度和经度?以及如何在Spring中使用它?

来自分类Dev

使用mgo和mongodb的I / O超时

来自分类Dev

Go(golang)与mgo中的MongoDB:如何使用逻辑运算符进行查询?

来自分类Dev

如何在Go中使用双星球?

来自分类Dev

如何在Laravel Framework中使用MongoDB

来自分类Dev

如何在mongodb中使用聚合

来自分类Dev

如何在MongoDB中使用条件查询

来自分类Dev

如何在mongoDB中使用prestashop?

来自分类Dev

如何在mongodb中使用null参数?

来自分类Dev

如何在Mongodb中使用$ add聚合?

来自分类Dev

如何在 MongoDB 中使用查询命令?

来自分类Dev

如何在 mongodb 中使用嵌套组?

Related 相关文章

热门标签

归档