MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Mảng truy vấn MongoDB C # của các đối tượng có chứa giá trị thuộc tính

Tôi tin rằng bạn đang tìm kiếm In FilterDefinition, sẽ làm cho Builder của bạn trông giống như thế này;

return Builders<MyObject>.Filter.ElemMatch(
            o => o.arrayProperty,
            Builders<ArrayProperty>.Filter.In(y => y.string1, listToFind));

Điều này tạo ra truy vấn này

db.MyObject.find({ "arrayProperty" : { "$elemMatch" : { "string1" : { "$in" : ["a", "b", "aString"] } } } })

Để có thể sử dụng Regex, bạn sẽ phải tạo một truy vấn khác (Tôi không thích cà phê nên điều này không có bất kỳ bảo hành nào)

        var listToFind = new List<string> { "a", "b", "astring" };

        var regexList = listToFind.Select(x => new BsonRegularExpression(x, "i"));

        var filterList = new List<FilterDefinition<MyObject>>();
        foreach (var bsonRegularExpression in regexList)
        {
            FilterDefinition<MyObject> fil = Builders<MyObject>.Filter.ElemMatch(o => o.arrayProperty, Builders<ArrayProperty>.Filter.Regex(
                 x => x.string1,
                 bsonRegularExpression));

            filterList.Add(fil);
        }


        var orFilter = Builders<MyObject>.Filter.Or(filterList);

        var result = collection.Find(orFilter).ToList();

Cái nào xây dựng truy vấn sau

db.MyObject.find({ "$or" : [{ "arrayProperty" : { "$elemMatch" : { "string1" : /a/i } } }, { "arrayProperty" : { "$elemMatch" : { "string1" : /b/i } } }, { "arrayProperty" : { "$elemMatch" : { "string1" : /astring/i } } }] })


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Chuyển đổi mongodb Binary _id thành LUUID bằng cách sử dụng nút

  2. MongoDB $ dayOfYear

  3. $ unwind mảng trống

  4. Làm thế nào để xử lý đúng cách di chuyển giản đồ mongoose?

  5. MongoDB-as-a-Service ở Canada