本文介绍了mongo聚合查询在golang与mgo驱动程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在mongodb中有以下查询 -
I have the following query in mongodb -
db.devices.aggregate({ $match: {userId: "v73TuQqZykbxFXsWo", state: true}}, { $project: { userId: 1, categorySlug: 1, weight: { $cond: [ {"$or": [ {$eq: ["$categorySlug", "air_fryer"] }, {$eq: ["$categorySlug", "iron"] } ] }, 0, 1] } } }, {$sort: {weight: 1}}, { $limit : 10 } );我正尝试使用mgo驱动程序在golang中编写此代码,但无法绕过我的头这是所有!
I'm trying to write this in golang using the mgo driver but not able to wrap my head around this at all!
如何将此转换为golang mgo查询?
How do I translate this to a golang mgo query?
推荐答案文档上的例子足以开始使用。但是,如果您对golang不熟悉, $ cond 部分可能会有点棘手。请参阅下面的示例代码:
The examples on the docs would be sufficient to get started. However, if you are not familiar with golang, the $cond part could be a bit tricky. See below example code:
collection := session.DB("dbName").C("devices") stage_match := bson.M{"$match":bson.M{"userId":"v73TuQqZykbxFXsWo", "state": true}} condition_weight := []interface{}{bson.M{"$or": []bson.M{ bson.M{"$eq": []string{"$categorySlug", "air_fryer"}}, bson.M{"$eq": []string{"$categorySlug", "iron"}}, }}, 0, 1} stage_project:= bson.M{"$project": bson.M{"userId":1, "categorySlug":1, "weight": condition_weight}} stage_sort := bson.M{"$sort": bson.M{"weight":1}} stage_limit := bson.M{"$limit": 10} pipe := collection.Pipe([]bson.M{stage_match, stage_project, stage_sort, stage_limit})另请参阅 mgo:type Pipe
更多推荐
mongo聚合查询在golang与mgo驱动程序
发布评论