2014-07-01 3 views
0

J'essaye de créer une collection de mongodb appelée produits dans lesquels j'ai des champs (identification, nom, prix et propriétés) et maintenant différents produits ont différents types de propriétés par exemple iphone a ensemble différent de propriétés par rapport aux chaussures Nike. Donc, comment définir un schéma et ajouter dynamiquement une nouvelle paire clé/valeur en utilisant mongoose.comment ajouter un champ dynamique à la collection existante en utilisant mongoose

{ 
    "_id":"001", 
    "name":"iphone 5", 
    "price":$650, 
    "properties":{ 
    'weight':2.3, 
    'talktime': '8 hours', 
    'battery type': 'lithium' 
    } 
} 


{ 
    "_id":"002", 
    "name":"nike shoes", 
    "price":$80, 
    "properties":{ 
    'size':10, 
    'color':black 
    } 
} 

Répondre

5

Jetez un oeil à type de schéma mixte de mangouste: http://mongoosejs.com/docs/schematypes.html. Si vous spécifiez ce type pour un attribut ({}), tout ce qui y est enregistré pourra être enregistré.

Par exemple:

var ProductSchema = new Schema({ 
    name: String, 
    price: String, 
    properties: {} 
}); 
mongoose.model("Product", ProductSchema); 


var Product = mongoose.model("Product"); 
var product = new Product({ 
    "name": "iphone 5", 
    "price": "$650", 
    "properties": { 
     "weight": 2.3, 
     "talktime": "8 hours", 
     "battery type": "lithium" 
    } 
}); 
product.save(); 

Après avoir exécuté le code ci-dessus, la base de données contient maintenant ce document:

{ 
    "name" : "iphone 5", 
    "price" : "$650", 
    "properties" : { 
     "battery type" : "lithium", 
     "talktime" : "8 hours", 
     "weight" : 2.3 
    }, 
    "_id" : ObjectId("53b35ca575e9d7a40de0edb7"), 
    "__v" : 0 
} 
+0

Merci pour votre solution, mais si je veux intégrer le sous-document. par exemple: product.anything = {id: 001, nom: "", desc: "", Propriétés: {size: "9", weight: "1.4", affichage: "4.7"} } est-il possible de faire de cette façon et je veux même ajouter la clé et la valeur des propriétés de front-end, est-ce possible? – Yash

+0

@Yash J'ai mis à jour la réponse pour mieux s'aligner avec votre question. L'utilisation du type de schéma mixte en tant que solution est-elle plus logique avec cette réponse mise à jour? – dylants

Questions connexes