MongoDB - 无应用程序的手动引用

时间:2015-04-03 21:42:24

标签: mongodb database nosql

我理解手动引用是一个包含对另一个文档的引用的文档。

与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"});

这将给出id。然后我的应用程序可以使用此ID来查询人员以查看谁住在这里?

但是,如果我没有申请。我将如何仅仅在mongo shell中进行此操作?我在考虑使用find,然后使用forEach迭代游标?但这看起来有点笨拙。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您不需要使用find()中的光标循环,只需使用findOne(),因为使用此方法返回单个文档,您可以直接访问该文档(不需要将游标方法应用于结果)。在mongo shell中你可以这样做:

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