Mongodb经过条件查询后获取的是整个文档?
仅有的幸福
仅有的幸福 2017-05-02 09:24:53
0
2
655

例如有组数据:

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文档可参阅么?

仅有的幸福
仅有的幸福

répondre à tous(2)
刘奇

La question posée par l'interrogateur est en fait liée au compromis entre le modèle de données et la requête métier.

1. Ce que MongoDB renvoie à chaque fois est essentiellement dans le document. Si le document contient un tableau (Array), tous les tableaux doivent être renvoyés ;

2. Comme le souhaite le sujet, si vous souhaitez suivre les conditions de la requête et renvoyer uniquement les données du tableau qui remplissent les conditions, vous pouvez envisager

1)重新设计data model,不使用数组嵌套;

2)使用$unwind,将数组按照Flat展开,可以参考下面这个帖子:     
/q/10...

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

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

Il renverra en effet le stock de données data.fruit mais il peut aussi renvoyer le stock de conditions, mais vous devez connaître le numéro d'index du stock dans le tableau de fruits.

c'est-à-dire

 {'data.fruit.1.sock': 1}

Référence (mongodb version 3.4) :
https://docs.mongodb.com/manu...
https://docs.mongodb.com/manu...

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!