mongodb - 调用 Find mgo 时参数过多

标签 mongodb go mgo

我尝试使用 $elemMatch 运算符搜索具有多个字段条件的集合。然后我遇到错误“调用 c.Find 时参数过多”。文档结构如下:-

{
    "_id" : ObjectId("56cfca4bf23e4e2859257425"),
    "company_name" : "bank",
    "admin" : {
        "email" : "xyz@bank.com",
        "fullname" : "xyz"
    },
    "process" : [ 
        {
            "process_name" : "Enquiry",
            "processtype" : 0,
            "sortorder" : 0
        }, 
        {
            "process_name" : "Converted",
            "processtype" : 1,
            "sortorder" : 1
        }
    ]
}

我的查询如下:-

colQuerier := bson.M{"company_name": "bank"}
match := bson.M {"process": bson.M {"$elemMatch": bson.M{"process.process_name":"Converted"}}}
err := c.Find(colQuerier,match).Sort("-id").All(&results)

我的查询有什么问题?是语法错误吗?

最佳答案

因为c.Find( https://godoc.org/gopkg.in/mgo.v2#Collection.Find ) 只允许一个参数

你可以试试

query := bson.M{
    "company_name": "bank",
    "process": bson.M{
        "$elemMatch": bson.M{"process.process_name":"Converted"}
    }
}
err := c.Find(query).Sort("-id").All(&results)

关于mongodb - 调用 Find mgo 时参数过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35644058/

相关文章:

c# - 使用 mongoDB c# 驱动程序将对象序列化为字符串值(就像在其上调用 ToString() 一样)

php - 如何在替换整个文档的同时更新 mongodb 文档?

转到 channel : consume data from channel although not push anything to channel

function - 值接收器与指针接收器

mongodb - 如何在 golang mgo.v2 库中使用 MongoDB 获取聚合管道结果

mongodb - Go mgo 获取字段类型

mongodb - 更新 MongoDB 集合中所有文档中的元素

具有多个条件和ID的mongodb聚合查找

regex - 是否可以从 golang 中的字符串(复杂字符串)中检索子字符串

mongodb - 在带有 mgo 的查找查询中使用时间戳