Json original
{
"_id" : ObjectId("58b3a8dc96fbc7cfb8287093"),
"name" : "《地下水质量标准》",
"GBNumber" : "GB/T 14848-93",
"dataEntryClerk" : "handsomeboy",
"lastModified" : "Fri Feb 27 2017 12:03:40 GMT+0800",
"contents" : [
{
"standardID" : "9527-01",
"unit" : "mg/L",
"classifications" : [
{
"level" : "I",
"upperLimit" : "0",
"lowerLimit" : "50"
},
{
"level" : "II",
"upperLimit" : "50",
"lowerLimit" : "150"
},
{
"level" : "III",
"upperLimit" : "150",
"lowerLimit" : "250"
},
{
"level" : "IV",
"upperLimit" : "250",
"lowerLimit" : "350"
},
{
"level" : "V",
"upperLimit" : "350",
"lowerLimit" : "-1"
}
]
},
{
"standardID" : "7439-89-6",
"unit" : "mg/L",
"classifications" : [
{
"level" : "I",
"upperLimit" : "0",
"lowerLimit" : "0.1"
},
{
"level" : "II",
"upperLimit" : "0.1",
"lowerLimit" : "0.2"
},
{
"level" : "III",
"upperLimit" : "0.2",
"lowerLimit" : "0.3"
},
{
"level" : "IV",
"upperLimit" : "0.3",
"lowerLimit" : "0.4"
},
{
"level" : "V",
"upperLimit" : "0.5",
"lowerLimit" : "-1"
}
]
}
]
}
Les résultats que vous souhaitez interroger :
{
"contents" : [
{
"standardID" : "9527-01",
"unit" : "mg/L",
"classifications" : [
{
"level" : "I",
"upperLimit" : "0",
"lowerLimit" : "50"
},
{
"level" : "II",
"upperLimit" : "50",
"lowerLimit" : "150"
},
{
"level" : "III",
"upperLimit" : "150",
"lowerLimit" : "250"
},
{
"level" : "IV",
"upperLimit" : "250",
"lowerLimit" : "350"
},
{
"level" : "V",
"upperLimit" : "350",
"lowerLimit" : "-1"
}
]
}
]
}
Pourriez-vous s'il vous plaît me dire comment écrire db.xxx.find()
Je voudrais d'abord faire un commentaire :
Posez une question et postez un exemple du problème reproductible qui est minimisé Si vous publiez un document aussi long, tout le monde sera fatigué de le lire.
Ce dont vous avez besoin est en fait de renvoyer certains documents spécifiques dans le tableau, pas le tableau entier.
1 Si vous n'avez besoin de renvoyer qu'un seul élément dans le tableau
La première ligne est la condition de requête et la deuxième ligne est la condition de filtre. Vous pouvez voir que les opérateurs peuvent également être utilisés dans des conditions de filtrage. Cependant, cet opérateur ne renverra que le premier élément qui remplit la condition et nécessite MongoDB version 2.2 ou supérieure .
Ou utilisez le sélecteur d'indice
$
:Les conditions de requête de l'exemple ci-dessus peuvent également être utilisées
$elemMatch
.Si vous devez renvoyer plusieurs éléments correspondants dans un tableau :
2
$unwind
fonctionne sur
$unwind
comme un flux de documents indépendant en utilisantcontents
Pour le code, voir la réponse de @bguo.Mais cela peut entraîner des problèmes de performances si votre baie est grande.
3
$filter
Il s'agit d'un nouvel opérateur dans la version
3.2
, utilisé pour filtrer le contenu renvoyé.Bien sûr, vous pouvez également utiliser
$redact
(version 2.6), oumapReduce()
et bien d'autres méthodes.Conditions de requête. Par exemple nom
Une méthode d'implémentation : utiliser l'agrégat de MongoDB.
1. Appliquez d’abord $unwind au contenu contenant le tableau
2. Utilisez ensuite $match pour appliquer des conditions de filtrage
3. Enfin, utilisez $project pour conserver les champs obligatoires
Référez-vous au code ci-dessous
Pour référence.
J'adore MongoDB ! Amusez-vous !
------------------------Magnifique séparateur------------------ --- ----------
La communauté chinoise MongoDB propose de nombreuses activités hors ligne, veuillez cliquer ci-dessous :
Discussion sur Huashan Sword 2017|Communauté chinoise MongoDB
La gare de Hangzhou en mars arrive bientôt ! ! ! Amis intéressés, inscrivez-vous vite ! ! !