6
पर विचार करें निम्नलिखित संरचनाओंजोरदार MongoDB सी # ड्राइवर का उपयोग कर 2.2
public class Parent
{
public ObjectId Id { get; set; }
public IEnumerable<Child> Children { get; set; }
}
public class Child
{
public string Value { get; set; }
}
मैं सभी माता पिता को खोजने के लिए चाहते हैं वस्तु जिसका बच्चों मूल्यों यानी
var parents = new List<Parent>();
var values = new[] { "A", "B", "C" };
parents.Where(x => !values.Except(x.Children.Select(y => y.Value)).Any());
या किसी सरणी के एक सुपरसेट हैं नेस्टेड मैदान पर क्वेरी के लिखे
{ "Children.Value": { $all: ["A", "B", "C"] } }
मैं इसे टाइप किए गए तरीके से करना चाहता हूं लेकिन अनुमानित अनुवादक एन का समर्थन नहीं करता है umerable.Select तो यह काम नहीं करेगा:
var filters = values.Select(x => Builders<Parent>.Filter.Where(y => y.Children.Any(z => z.Value == x)));
Builders<Parent>.Filter.And(filters);
वहाँ एक जादू फ़ील्ड नाम स्ट्रिंग का उपयोग किए बिना एक बेहतर तरीका है:
Builders<Parent>.Filter.All(x => x.Children.Select(y => y.Value), values);
मैं वर्तमान में इस समाधान का उपयोग कर रहा हूँ?
क्या आपने कभी इसे समझ लिया था? मुझे ऐसा करने की ज़रूरत है ... –