0
votes

Comment faire correspondre chaque champ de matrice à un autre champ de MongoDB

J'ai un tableau comme ci-dessous: xxx pré>

et il y a des documents de MongoDB comme ci-dessous: P>

[{
  "name": "perl", "company": "A", testInform: { "_id": 3, "name": "perl", "car": "Renaut"}
},{
  "name": "melon", "company": "B", testInform: { "_id": 2, "name": "melon", "car": "ferrari"}
},{
  "name": "apple", "company": "C", testInform: { "_id": 1, "name": "apple", "car": "ford"}
},{
  "name": "apple", "company": "D", testInform: { "_id": 1, "name": "apple", "car": "ford"}
},{
  "name": "perl", "company": "E", testInform: { "_id": 3, "name": "perl", "car": "Renaut"}
},{
  "name": "apple", "company": "F", testInform: { "_id": 1, "name": "apple", "car": "ford"}
}]


0 commentaires

3 Réponses :


0
votes

$ lookup avec mot-clé de pipeline xxx


0 commentaires

0
votes

Si les données TEST TRAY sont stockées dans une collection, l'obtention de O / P est assez simple $ lookup avec $ projet agrégation

$ arrayelemat pourquoi? Parce que la recherche va chercher les documents joints dans une matrice en tant que testinform xxx

basé sur les commentaires:

L'idée est d'itérer le curseur des documents stockés dans mongodb array.pototype.find () L'objet de test qui correspond au champ nom , ajoutez-le du résultat. xxx


2 commentaires

La matrice de test n'est pas stockée dans une collection. C'est juste une valeur constante dans JS. Pourriez-vous vous recommander une autre solution pour cela?


@DDDDD a mis à jour la réponse avec une autre solution. Vérifiez-le si cela fonctionne pour vous. REMARQUE : J'ai utilisé async / attendre la syntaxe ici, si ce n'est pas ce que vous utilisez, peut modifier l'itération à l'aide de Callback Style avec foreach . Mais la logique reste la même.



0
votes

L'agrégation a une scène: itérate sur le tableau Test et obtenir l'élément de tableau en tant qu'oppose qui correspond au champ nom dans le document et le tableau (en utilisant $ Réduire opérateur). xxx


0 commentaires