sql >> Databáze >  >> NoSQL >> MongoDB

Dotaz na podobné pole v MongoDB

Děkuji všem, kteří se mi snažili pomoci. Oceňuji vaši pomoc.

Našel jsem řešení prostřednictvím agregačního kanálu.

var myArray = ['a', 'b', 'c'];

db.test.aggregate([
    {
        $unwind: '$chars',
    },
    {
        $match: { chars: { $in: myArray } },
    },
    {
        $group: {
            _id: '$_id',
            count: { $sum: 1 },
        },
    },
    {
        $project: {
            _id: 1,
            count: 1,
            score: { $divide: ['$count', myArray.length] },
        },
    },
    {
        $sort: { score: -1 },
    },
]);

To je to, co konzole vrací:

{ "_id" : ObjectId("586ebeacb2ec9fc7fef5ce31"), "count" : 3, "score" : 1 }
{ "_id" : ObjectId("586ebeb9b2ec9fc7fef5ce32"), "count" : 2, "score" : 0.6666666666666666 }
{ "_id" : ObjectId("586ebe89b2ec9fc7fef5ce2f"), "count" : 1, "score" : 0.3333333333333333 }

Doufám, že to pro někoho bude užitečné.




  1. Odeberte prvek pole ze VŠECH dokumentů pomocí ovladače MongoDB C#

  2. Nelze deserializovat řetězec z BsonType ObjectId v MongoDb C#

  3. MongoDB $pow

  4. MongoDB remove()