MongoDB - 没有应用程序的手动引用
MongoDB - Manual Referencing Without Application
我了解手册引用是指一个文档包含对另一个文档的引用。
如 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 遍历游标?但这似乎有点老套。
有什么建议吗?
您不需要使用 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]); }
}
我了解手册引用是指一个文档包含对另一个文档的引用。
如 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 遍历游标?但这似乎有点老套。
有什么建议吗?
您不需要使用 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]); }
}