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

Trình điều khiển C # MongoDB:Không thể tìm thấy cách chạy truy vấn phức tạp cho bộ lọc AnyIn trong MongoDB

đừng làm điều đó :)

Một nơi bạn có thể bắt đầu là tại đây . Nó mô tả tất cả các toán tử LINQ được hỗ trợ bởi trình điều khiển MongoDB .NET. Như bạn có thể thấy .Contains() không được đề cập ở đó có nghĩa là bạn không thể sử dụng nó và bạn sẽ gặp lỗi trong thời gian chạy nhưng không có nghĩa là không có cách nào để thực hiện những gì bạn đang cố gắng đạt được.

Toán tử gần nơi chứa nhất mà bạn có thể sử dụng là $ indexOfBytes trả về -1 nếu không có kết quả phù hợp và vị trí của một chuỗi con khác. Ngoài ra, vì bạn cần so khớp một mảng với một mảng khác, bạn cần hai cặp $ map $ anyElementTrue để thực hiện chính xác những gì .Any của .NET làm.

Truy vấn của bạn (ứng dụng MongoDB) có thể trông giống như sau:

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

Sân chơi Mongo ,

Bạn có thể chạy cùng một truy vấn từ .NET bằng BsonDocument lớp nhận một chuỗi (JSON) và chuyển đổi thành một truy vấn:

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. Khung tổng hợp MongoDB $ subtract

  2. Nhà điều hành đường ống tổng hợp MongoDB $ max

  3. lưu ảnh vào mongodb

  4. Tại sao express nói với tôi rằng công cụ xem mặc định của tôi không được xác định?

  5. Tạo Bộ sưu tập trong MongoDB