2015-04-03 2 views
2

Я понимаю, что это ручная ссылка, один документ, содержащий ссылку на другую.MongoDB - руководство пользователя без применения

Как и в документации MongoDB в:

original_id = ObjectId() 

db.places.insert({ 
    "_id": original_id, 
    "name": "Broadway Center", 
    "url": "bc.example.net" 
}) 

db.people.insert({ 
    "name": "Erin", 
    "places_id": original_id, 
    "url": "bc.example.net/Erin" 
}) 

Я могу использовать находку на местах, чтобы получить определенное имя.

db.places.find({name : "Broadway Center"}); 

Это даст идентификатор. И тогда мое приложение может использовать этот идентификатор, чтобы запросить людей, чтобы узнать, кто здесь живет?

Но, если у меня нет приложения. Как я буду делать это исключительно в оболочке монго? Я думал об использовании find, а затем повторил курсор, используя forEach? Но это кажется немного взломанным.

Любые предложения?

ответ

2

Вам не нужно проходить через курсор с find(), просто используйте findOne(), потому что этот документ возвращается с помощью этого метода, и у вас есть доступ к документу напрямую (нет необходимости применять методы курсора к результату). В оболочке майго вы можете сделать это:

var result = db.places.findOne({name : "Broadway Center"}); 
if (result) { 
    var place_id = result._id; 
    var peopleArray = db.people.find({ "places_id": place_id }).toArray(); 
    if (peopleArray.length > 0) { printjson (peopleArray[0]); } 
} 
Смежные вопросы