MongoDB DB引用如何



我正在学习MongoDB,我有下一个问题。

有我的MongoDB文档

这是协调文件

> db.coordenada.find().pretty()
{
        "_id" : ObjectId("5579b81342a31549b67ad00c"),
        "longitud" : "21.878382",
        "latitud" : "-102.277364"
}
{
        "_id" : ObjectId("5579b85542a31549b67ad00d"),
        "longitud" : "21.878626",
        "latitud" : "-102.280379"
}
{
        "_id" : ObjectId("5579b89442a31549b67ad00e"),
        "longitud" : "21.878845",
        "latitud" : "-102.283512"
}
{
        "_id" : ObjectId("5579b8bf42a31549b67ad00f"),
        "longitud" : "21.879253",
        "latitud" : "-102.286698"
}
{
        "_id" : ObjectId("5579b8dd42a31549b67ad010"),
        "longitud" : "21.879203",
        "latitud" : "-102.291558"
}
{
        "_id" : ObjectId("5579b8fd42a31549b67ad011"),
        "longitud" : "21.878427",
        "latitud" : "-102.296375"
}
{
        "_id" : ObjectId("5579b91d42a31549b67ad012"),
        "longitud" : "21.877571",
        "latitud" : "-102.299659"
}

这是鲁塔斯文件

> db.rutas.find().pretty()
{
        "_id" : "1",
        "nombre" : "Ruta Penal",
        "numero" : "20",
        "coordenadas" : [
                DBRef("coordenada", "5579b91d42a31549b67ad012")
        ]
}
{
        "_id" : "2",
        "nombre" : "Ruta Penal",
        "numero" : "20",
        "coordenadas" : [
                DBRef("coordenada", "5579b91d42a31549b67ad012")
        ]
}
{
        "_id" : "3",
        "nombre" : "Ruta Penal",
        "numero" : "20",
        "coordenadas" : [
                DBRef("coordenada", "5579b85542a31549b67ad00d")
        ]
}
{
        "_id" : 6,
        "nombre" : "Ruta Penal",
        "numero" : "20",
        "coordenadas" : [
                DBRef("coordenada", "5579b85542a31549b67ad00d")
        ]
}
>

我正在尝试做的是从"coordenada"中获取"longitud"和"latitud",但仅适用于"rutas"文档的"数字"20

我该怎么做?

PS对西班牙语术语表示抱歉。

根据 DBRef 的 mongodb 站点,您需要使用驱动程序来解压缩引用。我不认为蒙戈壳可以为你打开包装。

http://docs.mongodb.org/manual/reference/database-references/

若要解析 DBRefs,应用程序必须执行其他查询以返回引用的文档。许多驱动程序具有自动形成 DBRef 查询的帮助程序方法。驱动程序 [1] 不会自动将 DBRefs 解析为文档。 DBRefs 提供通用格式和类型来表示文档之间的关系。DBRef 格式还提供了用于表示文档之间链接的通用语义(如果数据库必须与多个框架和工具交互)。 除非您有令人信服的理由使用 DBRefs,否则请改用手动引用。

基于此,我建议使用手动引用(仅文档 ID)来更改它。

但是,要回答您的问题,您可以使用任何语言驱动程序,但下面是使用pymongo的Python示例:

from pymongo import MongoClient
from bson.objectid import ObjectId
from bson.dbref import DBRef
client = MongoClient()
db = client.testDB
rutas_20 = list(db.rutas.find({"numero": "20"}))
for ruta in rutas_20:
    for coordenada in ruta.get('coordenada'):
        coord_doc = db.coordenada.find_one({"_id": ObjectId(coordenada.id) })
        print coord_doc.get('longitud'), coord_doc.get('latitud')

你也可以使用 db.dereference(DBRef())。

希望对您有所帮助。干杯。

是的,您绝对可以通过引用其他类的对象 ID 来获取特定项目的纬度和经度。

要使用momgo dbRef,您必须根据您使用的特定语言使用特定的驱动程序。驱动程序文档将告诉您可以使用的功能。

我使用PHP,因此参考,http://www.php.net/manual/en/class.mongodbref.php/

相关内容

  • 没有找到相关文章

最新更新