đừ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
và $ 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" ] } ] }
}
}
}
}
}
}
})
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();