2016-05-22 7 views
2

Folks, У меня есть коллекция под названием «Животные», пример документы -«Найти() внутри« Вставить »в 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" 
} 

Мой вопрос заключается в следующем - Как я пишу Insert-заявление в Монго оболочки программно сгенерировать «родительский идентификатор» (если он уже существует)? Я хочу, чтобы иметь возможность написать что-то вроде этого -

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

Заранее спасибо

+0

Что следует значение «parent_id» выглядеть после установки? – styvane

ответ

2

Это невозможно, так как Монго оболочка просто интерактивный интерфейс JS к серверу MongoDB поэтому вам нужно будет сделать отдельный запрос для родительский идентификатор перед выполнением вставки; вы не можете включить операцию запроса в документ-вставку.

Следующий пример демонстрирует это:

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);