Maison > Questions et réponses > le corps du texte
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"
}
PHPz2017-04-27 09:04:24
> db.customer.find().pretty()
{
"_id" : ObjectId("559bb1d1d39f0dcac2658f8e"),
"cust_id" : "abc123",
"ord_date" : ISODate("2012-10-03T16:00:00Z"),
"status" : "A",
"price" : 25,
"items" : [
{
"sku" : "mmm",
"qty" : 5,
"price" : 2.5
},
{
"sku" : "nnn",
"qty" : 5,
"price" : 2.5
}
]
}
{
"_id" : ObjectId("559bb1ead39f0dcac2658f8f"),
"cust_id" : "abc123",
"ord_date" : ISODate("2012-10-03T16:00:00Z"),
"status" : "B",
"price" : 30,
"items" : [
{
"sku" : "mmm",
"qty" : 6,
"price" : 3.5
},
{
"sku" : "nnn",
"qty" : 6,
"price" : 3.5
}
]
}
{
"_id" : ObjectId("559bb200d39f0dcac2658f90"),
"cust_id" : "abc123",
"ord_date" : ISODate("2012-10-03T16:00:00Z"),
"status" : "C",
"price" : 35,
"items" : [
{
"sku" : "mmm",
"qty" : 7,
"price" : 4.5
},
{
"sku" : "nnn",
"qty" : 7,
"price" : 4.5
}
]
}
> db.customer.find({"items.qty":6},{"items.$":1}).pretty() //只返回和查询条件匹配的那一个元素
{
"_id" : ObjectId("559bb1ead39f0dcac2658f8f"),
"items" : [
{
"sku" : "mmm",
"qty" : 6,
"price" : 3.5
}
]
}
Requête correspondant aux documents intégrés, vous pouvez également interroger directement, tels que :
> db.customer.find({"items.qty":6}).pretty()
{
"_id" : ObjectId("559bb1ead39f0dcac2658f8f"),
"cust_id" : "abc123",
"ord_date" : ISODate("2012-10-03T16:00:00Z"),
"status" : "B",
"price" : 30,
"items" : [
{
"sku" : "mmm",
"qty" : 6,
"price" : 3.5
},
{
"sku" : "nnn",
"qty" : 6,
"price" : 3.5
}
]
}
Correspondant à l'implémentation de votre requête ci-dessus :
> db.customer.find({"_id":ObjectId("559bb1ead39f0dcac2658f8f"),items: {'$elemMatch': {'sku': "mmm"}}},{"items.$":1}).pretty()
{
"_id" : ObjectId("559bb1ead39f0dcac2658f8f"),
"items" : [
{
"sku" : "mmm",
"qty" : 6,
"price" : 3.5
}
]
}
db.test.find({_id: ObjectId('55e99a2190df7a911d6ed1f1'), list: {'$elemMatch': {'aa': 1}}},{"list.$":1}).pretty( )
PHPz2017-04-27 09:04:24
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
PHP中文网2017-04-27 09:04:24
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
为情所困2017-04-27 09:04:24
Utilisez l'opérateur $ pour en renvoyer un ou plusieurs, pas question