J'ai une collection où les investissements sont un tableau à l'intérieur du document mongodb. Maintenant, en utilisant l'agrégation, j'essaie de filtrer les résultats lorsque la longueur des investissements est plus de 5 fois, puis de faire le prochain traitement à l'aide de la requête de correspondance.
Collection{
_id:000000
---------------------
"investments" : [ {
hhhhhhhhhhhhhh
},
{
hhhhhhhhhhhhhh
} }]
-----------------
La requête de correspondance que j'ai écrite comme ci-dessous ne fonctionne pas. Aucune suggestion:
db.companies.aggregate( [
{ $match: {"founded_year" : 2004},
{ "investments" : {$size: : { $gte: 5 } } } },
----------------------------------
--------------------------------
]}
aggregate
:db.companies.aggregate([
{ $match: { "founded_year":2004 } },
{ $project: { founded_year:1,
moreThanFive: { $gt: [ {$size: "$external_links" }, 5 ] } } },
{ $match: { moreThanFive : true }} ,
])
Tu devras:
1. Inclure un $project
stage, pour trouver le nombre d'investissements (le size
du tableau), et vérifier s'il est supérieur à 5.
2. puis faites un autre $match
stage pour filtrer ceux avec moreThanFive
est égal à true
.
find
:db.companies.find({'investments.5': {$exists: true}})
Vous demandez si le numéro de position 6 dans le tableau investments
existe.