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

MongoDB Find Exact Array Match, men rækkefølgen er ligegyldig

Det aktuelt accepterede svar sikrer IKKE et nøjagtigt match på dit array, bare at størrelsen er identisk, og at arrayet deler mindst ét ​​element med forespørgselsarrayet.

For eksempel forespørgslen

db.coll.find({ "hobbies": { "$size" : 2, "$in": [ "2", "1", "5", "hamburger" ] }  });

ville stadig returnere brugeren kaushik i så fald.

Det du skal gøre for at få et nøjagtigt match er at kombinere $size med $all , sådan:

db.coll.find({ "hobbies": { "$size" : 2, "$all": [ "2", "1" ] }  });

Men vær opmærksom på, at dette kan være en meget dyr operation, afhængigt af din mængde og struktur af data. Da MongoDB holder rækkefølgen af ​​indsatte arrays stabil, kan du måske klare dig bedre med at sikre arrays at være i en sorteret rækkefølge, når du indsætter til DB, så du kan stole på en statisk ordre, når du forespørger.



  1. Redis - bedste måde at gemme et stort kort på (ordbog)

  2. Tilføj element til MongoDB-dokumentarray i PyMongo uden genindsættelse

  3. MongoDB - Forespørg på en samling

  4. Sådan laver du fuldtekstsøgning i MongoDB