Comment Trier mongodb les résultats de la requête basée sur les sous-documents
je vais avoir 2 documents dans le score des collections(étudiant)bases de données comme ci-dessous dans la base de données mongodb.
{
id: 2,
type: 'newname',
subs: [
{ time: 20, val: 'b' },
{ time: 12, val: 'a' },
{ time: 30, val: 'c' }
] }, {
id: 1,
type: 'strs',
subs: [
{ time: 50, val: 'be' },
{ time: 1, val: 'ab' },
{ time: 20, val: 'cs' }
] }
Comment construire une requête pour obtenir le résultat ci-dessous
{
id: 1,
type: 'strs',
subs: [
{ time: 1, val: 'ab' },
{ time: 20, val: 'cs' },
{ time: 50, val: 'be' }
]
},
{
id: 2,
type: 'newname',
subs: [
{ time: 12, val: 'a' },
{ time: 20, val: 'b' },
{ time: 30, val: 'c' }
]
}
c'est à dire: une requête pour trouver les documents basé sur le temps et d'avoir à trier les résultats sur 2 critères
- par id ASC
- par sous document temps ASC
OriginalL'auteur Naveen Subramani | 2013-09-25
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
cursor.sort()
pour trier sur plusieurs champs (en fait un combo) en même temps, mais je ne pense pas qu'il fonctionne lorsque le tri à la fois un document et un sous-domaine dans le même temps.Si vous étiez à trier sur deux champs différents de la partie supérieure du document ou sur deux champs différents d'un sous-document, alors il serait bien je pense.
De sorte que vous pouvez obtenir un résultat similaire en utilisant la l'agrégation cadre. Tout ce que vous avez à faire est essentiellement briser les tables de la
subs
champ et puis tri.Vous pourriez faire quelque chose comme:
Avec le code ci-dessus, vous devriez obtenir un résultat semblable à ceci:
Correcte, il a été un moment depuis que j'ai vu, mais vous pouvez le groupe en tant que dernière étape de l'agrégation, j'ai écrit et utiliser $addToSet pour obtenir le résultat souhaité. Si vous voulez, je peux écrire la requête...
OriginalL'auteur tzik
Étrangement, MongoDB ne fournit aucune méthode pour trier les documents de sub par l'interrogation. Il semble que vous devrez mettre à jour le naturel de l'ordre de tri de la sous-docs comme indiqué ci-dessous :
Si ce sont les 2 seules docs dans votre collection, écrire ci-dessous requête :
puis exécuter la requête pour trier sur ID :
Vous obtiendrez en dessous de sortie.
Espère qu'il résout la situation vous. Ci-dessous la référence :
http://docs.mongodb.org/manual/reference/operator/update/sort/#sort-array-of-documents-by-a-field-in-the-documents
OriginalL'auteur logeekal
Vous pouvez utiliser
cursor.sort(sort)
Pour Exapmle:
pour trier les résultats à l'aide de l'id dans l'ordre croissant.
Pour plus de détails consultez le lien suivant.
http://docs.mongodb.org/manual/reference/method/cursor.sort/
je pense que le tri des documents de sub n'est pas possible stackoverflow.com/questions/3848814/...
OriginalL'auteur Arun K