8
votes

Trouver le prochain document à MongoDB

S'il s'agit de ma structure de collection:

{ _id: ObjectId("4fdbaf608b446b0477000142"), name: "product 1" }
{ _id: ObjectId("4fdbaf608b446b0477000143"), name: "product 2" }
{ _id: ObjectId("4fdbaf608b446b0477000144"), name: "product 3" }


2 commentaires

Vous voulez donc interroger pour le premier document après "produit 1"? Comment définissez-vous l'ordre des documents (ce qui est considéré comme «après»)?


Je ne les ai pas réorganisés du tout, ils sont dans l'ordre d'insertion initial. La façon dont j'ai eu le produit 1 est une personne va à Testsite.com/4fdbaf608b446b0477000142 Je prends le numéro et la requête par ID.


3 Réponses :


0
votes

Vous pouvez récupérer les articles dans l'ordre d'insertion en utilisant ObjectId. Voir: http://www.mongodb.org/display/docs/Optimizing + Object + IDS # OptimiserObjectids

Si vous souhaitez les récupérer dans un autre ordre, vous devrez définir ce que cet ordre est et stockera plus d'informations dans vos documents.


0 commentaires

19
votes

Il est préférable d'ajouter des critères explicites () si vous souhaitez une commande prévisible de résultats.

supposer que la commande que vous êtes après est "ordre d'insertion" et que vous utilisez la valeur par défaut de MongoDB. ObjectIds, alors vous pouvez interroger en fonction de l'objetID: xxx

Notez que cet exemple ne fonctionne que parce que:

  • Les quatre premiers octets de l'objectid sont calculés à partir d'un horodatage de style UNIX (voir: ObjecteID Spécification )
  • une requête sur _ID seul utilisera l'index par défaut _id (trié par ID) pour trouver un match

    Donc vraiment, ce type implicite est le même que: xxx

    Si vous avez ajouté plus de critères à la requête pour qualifier comment trouver le "suivant" Produit (par exemple, une catégorie ), la requête pourrait utiliser un index différent et la commande peut ne pas être aussi utile.

    Vous pouvez vérifier l'utilisation de l'index avec expliquer () .


0 commentaires