आप इसे प्राप्त करने के लिए एकत्रीकरण ढांचे का उपयोग कर सकते हैं, यह नहीं बदलेगा कि आपने अपना फ़िल्टर कैसे बनाया है क्योंकि आप इसे केवल $match
के भीतर उपयोग कर सकते हैं मंच।
नमूना चरण बनाने के लिए वर्तमान में कोई टाइप-सुरक्षित तरीका नहीं है (यह जीरा बैकलॉग पर है CSHARP- 2659 ), हालांकि, आप केवल सामान्य JSON सिंटैक्स का उपयोग कर सकते हैं।
var client = new MongoClient();
var db = client.GetDatabase("test");
var collection = db.GetCollection<Person>("people");
// Setup some data
var people = Enumerable.Range(1, 100)
.Select(x => new Person {Name = $"Person {x}", Age = x});
await collection.InsertManyAsync(people);
var filter = Builders<Person>.Filter.Gt(x => x.Age, 18);
var sampleSize = 10;
// Run aggregation query with a sample stage ($sample)
var personSample = await collection.Aggregate()
.Match(filter)
.AppendStage<Person>([email protected]"{{ $sample: {{ size: {sampleSize} }} }}")
.ToListAsync();
// Output sample
foreach (var person in personSample)
{
Console.WriteLine($"{person.Name}, Age: {person.Age}");
}
// Example output, note only 10 items all with the matching filter.
// Person 84, Age: 84
// Person 97, Age: 97
// Person 35, Age: 35
// Person 40, Age: 40
// Person 69, Age: 69
// Person 28, Age: 28
// Person 79, Age: 79
// Person 31, Age: 31
// Person 20, Age: 20
// Person 64, Age: 64
आप MongoDB दस्तावेज़ीकरण पर $sample चरण के बारे में अधिक जानकारी प्राप्त कर सकते हैं, https://docs.mongodb.com/manual/reference/operator/aggregation/sample/