sql >> Database >  >> NoSQL >> MongoDB

Mongoïde - limiet voor verschillende zoekopdrachten

onderscheiden in MongoDB is een commando en commando's retourneren geen cursors. Alleen cursors ondersteunen limit() terwijl opdrachtresultaten dat niet doen, net zoals sort() hier niet wordt ondersteund, en ik denk dat sorteren belangrijk genoeg is om als eerste uit te voeren, anders weet je nooit welke "eerste twee" verschillende items je krijgt

Er is een manier om dit te omzeilen, maar met behulp van het aggregatieraamwerk. In gewone MongoDB-query-spraak (zoals je gebruikt op de MongoDB-shell), zou je gebruiken:

db.places.aggregate( [
    { $match: { 'tags' : { $in: [ 'food' ] } } },
    { $group: { '_id': '$name' } },
    { $sort: { 'name': 1 } },
    { $limit: 2 },
] );

In Mongoid vermoed ik dat je de eerste regel kunt wijzigen in:

Place.collection.aggregate( [



  1. MongoDB-update. Proberen een veld in te stellen vanuit een eigenschap van een ander

  2. Een bestaande MongoDB Docker Container herstarten met een nieuwe vlag voor daemon

  3. 504-fout bij het invoegen in de mongo-database

  4. wil redis-server non-stop op de achtergrond draaien