2016-05-22 20 views
2

Leute, ich eine Sammlung ‚Animals‘, Beispieldokumente genannt haben -"Find() in Einfügen" in MongoDB?

{ 
    "_id" : ObjectId("57321290c46ff86ce9e00b35"), 
    "parent_id" : null, 
    "author" : "[email protected]", 
    "name" : "Mammal", 
    "status" : "active", 
    "sub_species" : [ 
     "Dog", 
     "Cat", 
     "Cow" 
    ] 
} 

{ 
    "_id" : ObjectId("57321c10c46ff86ce9e00b36"), 
    "author" : "[email protected]", 
    "name" : "Dog", 
    "status" : "active", 
    "parent_id" : "57321290c46ff86ce9e00b35" 
} 

Meine Frage ist - Wie kann ich schreiben Sie eine Insert-Anweisung in Mongo Shell programmatisch erzeugen die ‚Eltern-id‘ (wenn es schon existiert)? Ich möchte so etwas wie dies in der Lage sein zu schreiben - in

db.animals.insert({ 
    "author" : "[email protected]", 
    "name" : "Dog", 
    "status" : "active", 
    "parent_id" : {db.animals.find({ name: { $eq: 'Mammal' } })} 
}) 

Dank Voraus

+0

Was nach dem Einsetzen der Wert von „parent_id“ aussehen sollte? – styvane

Antwort

2

das nicht möglich ist, wie Mongo Shell nur eine interaktive JS Schnittstelle zu MongoDB-Server ist daher würden Sie eine separate Abfrage vornehmen müssen für die Eltern-ID vor dem Einfügen; Sie können die Abfrageoperation nicht innerhalb des Einfügedokuments einschließen.

Das folgende Beispiel zeigt dies:

var parent_id = db.animals.findOne({ name: 'Mammal' })._id; 
var insertDoc = { 
    "author" : "[email protected]", 
    "name" : "Dog", 
    "status" : "active", 
    "parent_id" : parent_id 
}; 
db.animals.insert(insertDoc);