MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

MongoDB:Bagaimana cara mengembalikan elemen acak tanpa Linq? (MongoDB, C#)

Anda dapat menggunakan kerangka kerja agregasi untuk mencapai ini, itu tidak akan mengubah cara Anda membangun filter karena Anda hanya dapat menggunakan ini dalam $match panggung.

Saat ini tidak ada cara yang aman untuk membuat tahap sampel (ini ada di Jira backlog CSHARP- 2659 ), namun, Anda bisa menggunakan sintaks JSON normal.

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

Anda dapat menemukan informasi lebih lanjut tentang tahap $sample di dokumentasi 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. MongoDB Bersarang ATAU/DAN Dimana?

  2. ukuran batch kursor luwak

  3. Kesalahan kunci duplikat luwak dengan upsert

  4. Dapatkan dokumen yang diperbarui di MongoDB

  5. Bagaimana Anda mengakses atribut objek yang ditanyakan dari Mongo di Meteor