db.test.find();
{
_id: ObjectId('55e99a2190df7a911d6ed1f1'),
list: [
{
"aa": 10,
"data": "test"
},
{
"aa": 1,
"data": "test"
}
]
}
db.test.find({_id: ObjectId('55e99a2190df7a911d6ed1f1'), list: {'$elemMatch': {'aa': 1}}})
预期结果:
{_id: ObjectId('55e99a2190df7a911d6ed1f1'),
list: {
"aa": 1,
"data": "test"
}
Requête correspondant aux documents intégrés, vous pouvez également interroger directement, tels que :
Correspondant à l'implémentation de votre requête ci-dessus :
db.test.find({_id: ObjectId('55e99a2190df7a911d6ed1f1'), list: {'$elemMatch': {'aa': 1}}},{"list.$":1}).pretty( )
Tout d'abord, si vous utilisez mongodb, vous devez comprendre que mongodb est nosql
Ensuite, la collection mongo stocke les documents
Enfin, vous devez savoir que la valeur renvoyée par find doit être une collection de documents, qui est un tableau
Donc, ce que vous avez dit est fondamentalement impossible à réaliser
Remplissez simplement les conditions de requête dont vous avez besoin dans Find. Pour plus de détails, veuillez consulter le site officiel de mongodb
Utilisez l'opérateur $ pour en renvoyer un ou plusieurs, pas question