我想获取具有多个条件的 mongodb 集合,但出现错误:
panic: Failed to parse: filter: [ { visibility: { $eq: "4" } }, {
discontinued: { $ne: "1" } }, { status: { $eq: "1" } } ]. 'filter' field
must be of BSON type Object.
代码如下:
package main
import (
"fmt"
"gopkg.in/mgo.v2/bson"
)
func GenerateFeed(headers, attributes interface{}, conditions
[]interface{}) {
var operations = []bson.M{}
for _, val := range conditions {
var attr, operator, value interface{}
cons := val.(map[interface{}]interface{})
for range cons {
attr = cons["attribute"]
operator = cons["operator"]
value = cons["value"]
switch operator {
case "==":
operator = "$eq"
case "!=":
operator = "$ne"
case "()":
operator = "$in"
}
}
operations = append(operations, bson.M{attr.(string):
bson.M{operator.(string): value}})
}
var products []Prod
session := Connect()
collection := session.DB("rfgv2").C("catalog_product_entity_1")
err := collection.Find(operations).All(&products)
CheckError(err)
fmt.Println(products)
}
type Prod struct {
EntityId string `bson:"entity_id"`
Name string `bson:"name"`
TypeId string `bson:"type_id"`
Sku string `bson:"sku"`
Manufacturer int32 `bson:"manufacturer"`
Status int32 `bson:"status"`
Visibility int32 `bson:"visibility"`
EnableGoogleCheckout int32 `bson:"enable_google_checkout"`
Delivery string `bson:"delivery"`
MetaTitle string `bson:"meta_title"`
}
我正在尝试使用 go 从 mongodb 获取基于多个聚合函数的记录。基本上,如果我们删除方括号并尝试使用 mongo 命令,它就可以工作,但是如何在 go 中解决这个问题?
蝴蝶刀刀
相关分类