Adakah Mongodb memperoleh keseluruhan dokumen selepas pertanyaan bersyarat?
仅有的幸福
仅有的幸福 2017-05-02 09:24:53
0
2
702

Sebagai contoh, terdapat satu set data:

name: 'food',
data: {
    fruit: [
        {
            name: 'apple',
            stock: 10
        },
        {
            name: 'pear',
            stock: 66
        }
        ...
    ]
            
}

db.col.find({'data.fruit.stock': 66}, {data.fruit.stock: 1})

Pertanyaan ialah keseluruhan data.fruite;

S1: Adakah terdapat sebarang cara untuk mendapatkan hanya data yang ditanya oleh penapis? Bagaimana jika saiz objek dokumen agak besar?
S2: Adakah ini ciri Mongodb? Selepas memadankan keadaan penapis, adakah keseluruhan objek dokumen dikembalikan?
S3: Adakah terdapat sebarang dokumentasi API di kawasan ini yang boleh saya rujuk?

仅有的幸福
仅有的幸福

membalas semua(2)
刘奇

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! ! !

漂亮男人
> 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...

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan