ऐसा मत करो :)
एक जगह से आप शुरुआत कर सकते हैं यहां
ए> . यह उन सभी LINQ ऑपरेटरों का वर्णन करता है जो MongoDB .NET ड्राइवर द्वारा समर्थित हैं। जैसा कि आप देख सकते हैं .Contains()
इसका उल्लेख नहीं किया गया है जिसका अर्थ है कि आप इसका उपयोग नहीं कर सकते हैं और आपको रनटाइम में एक त्रुटि मिलेगी लेकिन इसका मतलब यह नहीं है कि आप जो हासिल करने की कोशिश कर रहे हैं उसे करने का कोई तरीका नहीं है।
आपके द्वारा उपयोग किए जा सकने वाले शामिल के निकटतम ऑपरेटर $indexOfBytes
है। जो -1
returns लौटाता है यदि कोई मेल नहीं है और अन्यथा सबस्ट्रिंग की स्थिति है। इसके अलावा, चूंकि आपको किसी अन्य सरणी के विरुद्ध किसी सरणी का मिलान करने की आवश्यकता है, इसलिए आपको $नक्शा
और $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" ] } ] }
}
}
}
}
}
}
})
आप 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();