2011-08-05 8 views
1

J'ai un document avec une structure comme celle-ci:Insérer un document intégré dans un document existant dans MongoDB

Product (root) 
    Document1 (embedded) 
    Document2 
    ... 
    DocumentN 
     Part1 (embedded) 
     Part2 
     ... 
     PartN 

Je Poços mis en correspondance avec la structure. À un moment donné, l'utilisateur crée un produit, qui est sauvegardé dans la base de données immeadetly. L'utilisateur crée ensuite un document, après quoi l'entité Product est à nouveau enregistrée dans la base de données (si je comprends bien, elle doit faire une mise à jour car l'entité de produit existe déjà dans db). Toutefois, lorsque je crée un document N-e à l'intérieur d'un produit et que j'essaie de le sauvegarder, j'obtiens une erreur que j'essaie de télécharger trop (la taille maximale de la taille de téléchargement est de 16 Mo).

Comment puis-je mettre à jour le document produit afin d'insérer (télécharger) uniquement le nouveau document dans le produit au lieu de télécharger à nouveau le produit dans la base de données?

Merci!

+0

Pouvez-vous s'il vous plaît poster quelques codes de ce que vous avez déjà essayé – atbebtg

Répondre

0

Vous devez utiliser des upserts. Vous faites cela via une mise à jour et en spécifiant qu'il devrait être un upsert. Cela vous permettra de définir/mettre à jour des propriétés spécifiques sans spécifier l'objet entier.

vos produits ont supposant un champ productId que vous utiliserez pour identifier le produit à jour:

db.products.update({ "productId":1234 }, { $set: { document1: { part1: "foo" } } }, true); 

Le dernier param (vrai) indique que c'est un upsert. Votre conducteur peut avoir une manière légèrement différente d'indiquer l'upsert.

Questions connexes