Golangでmgoを使用して次のMongo集計クエリを作成する方法

TheJediCowboy:

私はテストして機能した次のクエリがありますが、 mgo

var userId = "57a944390b1acf0d069388c1";
db.users.aggregate([
        { "$match": { "_id": userID } },
        { "$unwind": "$groups" },
        {
            "$lookup": {
                "from": "groups",
                "localField": "groups.id",
                "foreignField": "_id",
                "as": "group"
            }
        },
        { "$unwind": "$group" },
        {
            "$project": {
                "group.requests": {
                    "$filter": {
                        "input" : "$group.requests",
                        "as" : "item",
                        "cond": { "$and" : [
                                { "$ne" : ["$$item.user_id", userID] },
                                { "$not" : {
                                        "$setIsSubset" : [
                                            [userID], "$$item.denied_users"
                                        ]
                                    }
                                }
                            ]               
                        }
                    }
                }
            }
        },
        { "$unwind" : "$group.requests" }
      ])

mgo次のようなクエリになります。

c := session.DB(info.Db()).C("users")

    o1 := bson.M{"$match": bson.M{"_id": userID}}
    o2 := bson.M{"$unwind": "$groups"}
    o3 := bson.M{"$lookup": bson.M{
        "from":         "groups",
        "localField":   "groups.id",
        "foreignField": "_id",
        "as":           "group",
    }}
    o4 := bson.M{"$unwind": "$group"}
    o5 := bson.M{
        "$project": bson.M{
            "group.requests": bson.M{
                "$filter": bson.M{
                    "input": "$group.requests",
                    "as":    "item",
                    "cond": bson.M{
                        "$and": []bson.M{
                            bson.M{"$ne": []string{"$$item.user_id", userID}},
                            bson.M{"$not": bson.M{
                                "$setIsSubset": []interface{}{
                                    []string{userID},
                                    []string{"$$item.denied_users"},
                                },
                            }},
                        },
                    },
                },
            },
        },
    }
    o6 := bson.M{"$unwind": "$group.requests"}
    pipeline := []bson.M{o1, o2, o3, o4, o5, o6}

私の推測では、これ$filterは機能していません。具体的には、$setIsSubsetとの引数を指定する方法が、その上の実際のmongoクエリと一致していません。そのセクション(内のすべてのもの)を削除すると$not、(適切なフィルターではないことを除いて)機能します。

基本的に、上位のクエリをmgoに翻訳する必要があります。

CrazyCrow:
"$setIsSubset": []interface{}{
    []string{userID},
    []string{"$$item.denied_users"},
},

等しい

"$setIsSubset" : [
    [userID], ["$$item.denied_users"]
]

だからあなたはそれを次のように定義する必要があると思います

"$setIsSubset": []interface{}{
    []string{userID},
    "$$item.denied_users",
},

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

mgoドライバーを使用したgolangでのmongo集約クエリ

分類Dev

mgoを使用してクエリ$ centerSphereを作成する方法

分類Dev

golang mgo.v2 liabryでMongoDBを使用してPiplineの集計結果を取得する方法

分類Dev

C# を使用して Mongo で次のクエリを変換する方法

分類Dev

次の条件でmongoの集計関数を作成する方法

分類Dev

mgoで$ orクエリを作成する方法

分類Dev

mgoパッケージを使用してgoで$ subtract mongoクエリを記述する方法

分類Dev

射影のサイズ配列に対する除算操作を使用して集計クエリを作成する方法

分類Dev

mgo(golangクライアント)を使用してmongodbのUUIDフィールドをクエリする方法

分類Dev

golangのmgoパッケージを使用して同様のクエリを実行する方法

分類Dev

Mongodb(Spring)でこの集計クエリを作成する方法

分類Dev

Golangのmgoクエリで$ and演算子を実行する方法

分類Dev

includeとregexを使用して、elasticsearchで用語の集計値の内部を正しくクエリする方法は?

分類Dev

CosmosAPIを使用してMongoDB集計クエリの40MBクエリ制限を排除する方法

分類Dev

Javaクエリdslを使用して、「クエリ+集計」elasticsearchを作成します

分類Dev

NULLを使用してMySQLクロス集計を作成する方法

分類Dev

golangのmgoを介してmongoにmath / big.Intを挿入する方法

分類Dev

集計関数を使用して遅いSQLクエリを改善する方法

分類Dev

集計を使用して単一のテーブルからDAXを使用してPowerBIマトリックスでランキングを作成する方法

分類Dev

$またはを使用してMongoDB集計クエリで配列を使用する

分類Dev

mgoを使用してgolangでmongodb検索を記述する方法

分類Dev

nslookupを使用して次の情報をクエリする方法

分類Dev

Golangを使用してWindowsの合計物理メモリをクエリする

分類Dev

golangを使用して複数の条件を持つmongoクエリで発行する

分類Dev

matchoperationの代わりにクエリオブジェクトを設定して、Javaを使用してmongodbで集計を実行する方法

分類Dev

集計クエリを使用して null 以外の値のみを表示する方法は?

分類Dev

mongo-driverを使用してGoで集計を実行する方法

分類Dev

Postgresクロス集計クエリを作成して列間の差を計算する

分類Dev

集計クエリを使用してmongodbの重複を削除する

Related 関連記事

  1. 1

    mgoドライバーを使用したgolangでのmongo集約クエリ

  2. 2

    mgoを使用してクエリ$ centerSphereを作成する方法

  3. 3

    golang mgo.v2 liabryでMongoDBを使用してPiplineの集計結果を取得する方法

  4. 4

    C# を使用して Mongo で次のクエリを変換する方法

  5. 5

    次の条件でmongoの集計関数を作成する方法

  6. 6

    mgoで$ orクエリを作成する方法

  7. 7

    mgoパッケージを使用してgoで$ subtract mongoクエリを記述する方法

  8. 8

    射影のサイズ配列に対する除算操作を使用して集計クエリを作成する方法

  9. 9

    mgo(golangクライアント)を使用してmongodbのUUIDフィールドをクエリする方法

  10. 10

    golangのmgoパッケージを使用して同様のクエリを実行する方法

  11. 11

    Mongodb(Spring)でこの集計クエリを作成する方法

  12. 12

    Golangのmgoクエリで$ and演算子を実行する方法

  13. 13

    includeとregexを使用して、elasticsearchで用語の集計値の内部を正しくクエリする方法は?

  14. 14

    CosmosAPIを使用してMongoDB集計クエリの40MBクエリ制限を排除する方法

  15. 15

    Javaクエリdslを使用して、「クエリ+集計」elasticsearchを作成します

  16. 16

    NULLを使用してMySQLクロス集計を作成する方法

  17. 17

    golangのmgoを介してmongoにmath / big.Intを挿入する方法

  18. 18

    集計関数を使用して遅いSQLクエリを改善する方法

  19. 19

    集計を使用して単一のテーブルからDAXを使用してPowerBIマトリックスでランキングを作成する方法

  20. 20

    $またはを使用してMongoDB集計クエリで配列を使用する

  21. 21

    mgoを使用してgolangでmongodb検索を記述する方法

  22. 22

    nslookupを使用して次の情報をクエリする方法

  23. 23

    Golangを使用してWindowsの合計物理メモリをクエリする

  24. 24

    golangを使用して複数の条件を持つmongoクエリで発行する

  25. 25

    matchoperationの代わりにクエリオブジェクトを設定して、Javaを使用してmongodbで集計を実行する方法

  26. 26

    集計クエリを使用して null 以外の値のみを表示する方法は?

  27. 27

    mongo-driverを使用してGoで集計を実行する方法

  28. 28

    Postgresクロス集計クエリを作成して列間の差を計算する

  29. 29

    集計クエリを使用してmongodbの重複を削除する

ホットタグ

アーカイブ