Rumah > Soal Jawab > teks badan
例如有组数据:
name: 'food',
data: {
fruit: [
{
name: 'apple',
stock: 10
},
{
name: 'pear',
stock: 66
}
...
]
}
db.col.find({'data.fruit.stock': 66}, {data.fruit.stock: 1})
查询到的是整个data.fruite
;
Q1: 有什么方法只获取过滤器查询的那条数据吗?如果这个文档对象量比较大咋办?
Q2: 这是Mongodb的一种特性?命中过滤器的条件后,返回的是整个文档对象?
Q3: 有这方面的API文档可参阅么?
怪我咯2017-05-02 09:26:53
Soalan yang ditanya oleh penyoal sebenarnya berkaitan dengan pertukaran antara Model Data dan pertanyaan perniagaan.
1. Apa yang dikembalikan oleh MongoDB pada dasarnya adalah dalam dokumen dokumen Jika dokumen mengandungi tatasusunan (Array), semua tatasusunan perlu dikembalikan
2. Seperti yang dikehendaki oleh subjek, jika anda ingin mengikut syarat pertanyaan dan hanya mengembalikan data dalam tatasusunan yang memenuhi syarat, anda boleh mempertimbangkan
1)重新设计data model,不使用数组嵌套;
2)使用$unwind,将数组按照Flat展开,可以参考下面这个帖子:
/q/10...
Untuk rujukan.
Sayangi MongoDB!
------------------------ Pemisah cantik------------------ --- ----------
Komuniti Cina MongoDB mempunyai banyak aktiviti luar talian, sila klik di bawah:
Perbincangan Pedang Huashan 2017|Komuniti Cina MongoDB
Stesen Hangzhou pada bulan Mac akan datang tidak lama lagi! ! ! Rakan-rakan yang berminat sila daftar segera! ! !
漂亮男人2017-05-02 09:26:53
> db.example.find().pretty()
{
"_id" : ObjectId("58b50cd6a7329db9121efa00"),
"name" : "food",
"data" : {
"fruit" : [
{
"name" : "apple",
"stock" : 10
},
{
"name" : "pear",
"stock" : 66
}
]
}
}
> db.example.find({'data.fruit.stock':66}, {'data.fruit.stock': 1}).pretty()
{
"_id" : ObjectId("58b50cd6a7329db9121efa00"),
"data" : {
"fruit" : [
{
"stock" : 10
},
{
"stock" : 66
}
]
}
}
Ia sememangnya akan mengembalikan stok data.data buah; tetapi ia juga boleh mengembalikan stok syarat, tetapi anda perlu mengetahui nombor indeks stok dalam tatasusunan buah.
iaitu
{'data.fruit.1.sock': 1}
Rujukan (mongodb versi 3.4):
https://docs.mongodb.com/manu...
https://docs.mongodb.com/manu...