sql >> データベース >  >> NoSQL >> MongoDB

C#MongoDBドライバー:MongoDBでAnyInフィルターの複雑なクエリを実行する方法が見つかりません

    しないでください:)

    開始できる場所の1つは、ここ 。 MongoDB.NETドライバーでサポートされているすべてのLINQオペレーターについて説明します。ご覧のとおり、.Contains() そこには記載されていません。つまり、使用できず、実行時にエラーが発生しますが、達成しようとしていることを実行する方法がないという意味ではありません。

    使用できるcontainsに最も近い演算子は、 $indexOfBytes です。 -1を返します 一致するものがない場合、およびそれ以外の場合は部分文字列の位置。また、配列を別の配列と照合する必要があるため、2組の $ map および $ anyElementTrue .NETの.Anyを正確に実行する します。

    クエリ(MongoDBクライアント)は次のようになります:

    db.collection.find({
        $expr: {
            $anyElementTrue: {
                $map: {
                    input: "$groupsAuthorized",
                    as: "group",
                    in: {
                        $anyElementTrue: {
                            $map: { 
                                input: ["France/IDF/Paris", "USA/NY/NYC"],
                                as: "userGroup",
                                in: { $ne: [ -1, { $indexOfBytes: [ "$$userGroup", "$$group" ] } ] }
                            }
                        }
                    }
                }
            }
        }
    })
    

    Mongo Playground

    BsonDocumentを使用して、.NETから同じクエリを実行できます。 文字列(JSON)を受け取り、クエリに変換するクラス:

    var query = BsonDocument.Parse(@"{
        $expr: {
            $anyElementTrue:
            {
                $map:
                {
                    input: '$groupsAuthorized',
                        as: 'group',
                        in: {
                        $anyElementTrue:
                        {
                            $map:
                            {
                                input: ['France/IDF/Paris', 'USA/NY/NYC'],
                                    as: 'userGroup',
                                    in: { $ne: [-1, { $indexOfBytes: ['$$userGroup', '$$group'] } ] }
                            }
                        }
                    }
                }
            }
        }
    }");
    
    var result = col.Find(query).ToList();
    



    1. レプリカセットエラーコード76

    2. マングース、入力されたフィールドでクエリを並べ替える

    3. 同じmongodbクエリでGroupbycountとdistinctcountを選択します

    4. updateMultimongooperationに相当するAbstractMongoEventListenerメソッドとは何ですか