MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Driver C# MongoDB:Tidak dapat menemukan cara untuk menjalankan kueri kompleks untuk filter AnyIn di MongoDB

jangan lakukan itu :)

Satu tempat untuk memulai adalah di sini . Ini menjelaskan semua operator LINQ yang didukung oleh pengandar MongoDB .NET. Seperti yang Anda lihat .Contains() tidak disebutkan di sana yang berarti Anda tidak dapat menggunakannya dan Anda akan mendapatkan kesalahan saat runtime tetapi itu tidak berarti bahwa tidak ada cara untuk melakukan apa yang ingin Anda capai.

Operator terdekat dengan berisi yang dapat Anda gunakan adalah $indexOfBytes yang mengembalikan -1 jika tidak ada kecocokan dan posisi substring sebaliknya. Juga karena Anda perlu mencocokkan larik dengan larik lain, Anda memerlukan dua pasang $peta dan $anyElementTrue untuk melakukan persis apa yang .Any .NET's melakukan.

Kueri Anda (klien MongoDB) dapat terlihat seperti ini:

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" ] } ] }
                        }
                    }
                }
            }
        }
    }
})

Taman Bermain Mongo ,

Anda dapat menjalankan kueri yang sama dari .NET menggunakan BsonDocument kelas yang mengambil string (JSON) dan mengubahnya menjadi kueri:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Menampilkan Dokumen MongoDB dengan HTML

  2. MongoDB $asinh

  3. mongoimport Docker Gagal:kesalahan saat menyambung ke server db:tidak ada server yang dapat dijangkau

  4. Mongodump mendapatkan folder kosong

  5. Bagaimana cara membuat Agregasi dari daftar AggregationOperation di Spring data MongoDB?