sql >> データベース >  >> NoSQL >> MongoDB

MongoDB:Linqなしでランダム要素を返す方法は? (MongoDB、C#)

    集計フレームワークを使用してこれを実現できます。これは$match内で使用できるため、フィルターの作成方法は変わりません。 ステージ。

    現在、サンプルステージを作成するためのタイプセーフな方法はありません(これはJiraバックログにあります 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
    

    $ sampleステージの詳細については、MongoDBのドキュメント https:をご覧ください。 //docs.mongodb.com/manual/reference/operator/aggregation/sample/



    1. Mongodbの日付とC#LINQドライバーの比較

    2. Mongodb:Java(およびJavaScript)でのdb.printShardingStatus()/ sh.status()呼び出し

    3. Hadoopの仕組み–Hadoopの仕組みを理解する

    4. 複数のパターンとの一致のためのRedisキー機能