Maison > Questions et réponses > le corps du texte
Par exemple, il existe un ensemble de données :
name: 'food',
data: {
fruit: [
{
name: 'apple',
stock: 10
},
{
name: 'pear',
stock: 66
}
...
]
}
db.col.find({'data.fruit.stock': 66}, {data.fruit.stock: 1})
La requête porte sur l'intégralité du data.fruite
;
Q1 : Existe-t-il un moyen d'obtenir uniquement les données interrogées par le filtre ? Que se passe-t-il si la taille de l'objet du document est relativement grande ?
Q2 : Est-ce une fonctionnalité de Mongodb ? Après avoir satisfait à la condition de filtre, l’intégralité de l’objet document est-elle renvoyée ?
Q3 : Existe-t-il une documentation API dans ce domaine à laquelle je peux me référer ?
怪我咯2017-05-02 09:26:53
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 ! ! !
漂亮男人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
}
]
}
}
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...