sql >> Database teknologi >  >> NoSQL >> MongoDB

Forespørgsel efter lignende array i MongoDB

Tak til alle der forsøgte at hjælpe mig. Jeg sætter pris på din hjælp.

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

Dette er, hvad konsollen giver tilbage:

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

Håber nogen finder dette nyttigt.




  1. MongoDB:Forespørg en nøgle med mellemrum i sit navn

  2. MongoDB Java Driver-databaseforbindelse pooling med Tomcat

  3. Kan ikke løse Assembly- eller Windows-metadatafilen 'System.Data.dll'

  4. For let, ikke stigning, hvis der er et samme element i array