Je voudrais votre avis sur le processus i mis en place:MongoDB joindre/mise à jour
J'ai deux collections:
Clients: {client_id, client_type}
Ordres: {ORDER_ID, client_id, order_amount, order_valid}
Basé sur ces collections, je voudrais calculer, entre autres, le nombre d'ordres valides par type de client.
Je voudrais joindre les deux collections et ajoutez le client_type dans ma collection de commandes
Je l'ai fait de cette façon, mais je ne trouve pas cette solution très efficace.
db.clients.find (
{},
{
client_id : 1,
client_type : 1
}
).forEach(function (pClient) {
db.orders.update (
{
client_id : pClient.client_id
},
{ $set : {
client_type : pClient.client_type
}},
{
multi : true
}
)
});
Avez-vous une idée de la façon d'améliorer ce processus?
Il est préférable de tout mettre dans un seul document. {Identité du client; Type de client, {Identifiant de la commande, Montant de la commande, Commande valide}}. Ensuite, vous pouvez simplement utiliser le cadre agrégé. – Orejano
Les collections Orders et Clients sont chargées à partir de fichiers externes, je ne peux pas le faire. – Mouette
Si vous utilisez MongoDB 3.2 ['$ lookup'] (https://docs.mongodb.org/manual/reference/operator/aggregation/lookup/#pipe._S_lookup), effectuez une jointure externe gauche vers une autre collection dans la même base de données pour filtrer dans les documents de la collection "jointe" pour traitement. – chridam