sql >> Databáze >  >> NoSQL >> MongoDB

Agregát MongoDB, jak přidatToSet každý prvek pole ve skupinovém potrubí

Chcete-li napodobit funkci operátora aktualizace $addToSet s modifikátorem $each v agregačním kanálu, můžete použít kombinaci $push na seskupovací fázi a $reduce + $setUnion na projekční fázi. Např.:

db.collection.aggregate([
    {$group:{
       _id: null,
       selectedTags: { $push: '$tags' }      
    }},
    {$project: {
        selectedTags: { $reduce: {
            input: "$selectedTags",
            initialValue: [],
            in: {$setUnion : ["$$value", "$$this"]}
        }}
    }}
])

výsledky s jedním dokumentem, který obsahuje odlišný seznam značek ze všech dokumentů v selectedTags pole.



  1. Jak mohu dělat více než/méně než pomocí MongoDB?

  2. Jak ClusterControl provádí automatickou obnovu databáze a převzetí služeb při selhání

  3. více operátorů aktualizace mongo v jednom výpisu?

  4. Má mongoDB problémy s opětovným připojením nebo to dělám špatně?