sql >> Databasteknik >  >> NoSQL >> MongoDB

Fråga efter liknande array i MongoDB

Tack till alla som försökte hjälpa mig. Jag uppskattar din hjälp.

Jag har hittat en lösning via aggregeringspipeline.

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 },
    },
]);

Detta är vad konsolen ger tillbaka:

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

Hoppas någon tycker att detta är användbart.




  1. Fjäderdata åsidosätter förinställd serialiserare

  2. Model.find().toArray() påstår sig inte ha .toArray()-metoden

  3. Skapa Spring Data Aggregation från MongoDb aggregeringsfråga

  4. Att förvandla ett manus för sådd av Mongoose till ett löfte