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

MongoDB:Làm thế nào để trả về các phần tử ngẫu nhiên mà không có Linq? (MongoDB, C #)

Bạn có thể sử dụng khung tổng hợp để đạt được điều này, nó sẽ không thay đổi cách bạn đã xây dựng bộ lọc của mình vì bạn chỉ có thể sử dụng khung này trong $match sân khấu.

Hiện không có cách an toàn về loại nào để tạo giai đoạn mẫu (đây là trên Jira backlog CSHARP- 2659 ), tuy nhiên, bạn chỉ có thể sử dụng cú pháp JSON bình thường.

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

Bạn có thể tìm thêm thông tin về giai đoạn $ sample trên tài liệu MongoDB, https://docs.mongodb.com/manual/reference/operator/aggregation/sample/



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Gọi mongoose từ phía ứng dụng khách phản ứng

  2. Nâng cấp tài liệu nhúng trong yiimongodbsuite

  3. MongoDB không thể tìm thấy thư mục dữ liệu sau khi nâng cấp lên Mac OS 10.15 (Catalina)

  4. Cách viết một lát MongoDB $ trong golang

  5. Hỗ trợ WSO2 DSS cho mongodb 3.x.x