如何在mongodb中建立关系?

时间:2014-05-09 16:10:38

标签: mongodb relationship pymongo database

如何在mongodb中建立关系? 我在两个集合用户和connection_log之间创建外键。 如何从connection_log找到关系中的用户集合? 请引导我或以示例向我展示。

1 个答案:

答案 0 :(得分:2)

MongoDB中没有JOIN的概念。没有"外键"声明。没有参照完整性检查。习惯它。

您可以直接在文档中建立关系模型:One to Many作为One中的数组...

// users document
{
    "_id" : ObjectId("536bc13f20c26cde11a40001"),
    "userName" : "Mudshark"
    "connection_log" : [ 
        {
            "startTime" : ISODate("2014-05-09T17:40:24.307Z"),
            "endTime" : ISODate("2014-05-09T18:40:24.307Z")
        },
        { 
            "startTime" : ISODate("2014-05-01T17:00:00.000Z"), 
            "endTime" : ISODate("2014-05-01T18:00:00.000Z")
        }
    ]
}
{
    "_id" : ObjectId("536bc13f20c26cde11a40002"),
    "userName" : "Tailhook"
    "connection_log" : [ 
        { 
            "startTime" : ISODate("2014-05-08T23:32:12.992Z"),
            "endTime" : ISODate("2014-05-08T01:32:12.992Z") 
        }
    ]
}

或者你利用ObjectId来"关联" 2个不同馆藏的文件。

// users document
{
    "_id" : ObjectId("536bc13f20c26cde11a40001"),
    "userName" : "Mudshark"
}
{
    "_id" : ObjectId("536bc13f20c26cde11a40002"),
    "userName" : "Tailhook"
}

// connection_log document
{
    "_id" : ObjectId("aefe13f20c26cde11123453"),
    "user_id" : ObjectId("536bc13f20c26cde11a40001"),
    "startTime" : ISODate("2014-05-09T17:40:24.307Z"),
    "endTime" : ISODate("2014-05-09T18:40:24.307Z")
}
{
    "_id" : ObjectId("aefe13f20c26cde11125511"),
    "user_id" : ObjectId("536bc13f20c26cde11a40002"),
    "startTime" : ISODate("2014-05-08T23:32:12.992Z"),
    "endTime" : ISODate("2014-05-08T01:32:12.992Z")
}
{
    "_id" : ObjectId("aefe13f20c26cde111212ab"),
    "user_id" : ObjectId("536bc13f20c26cde11a40001"),
    "startTime" : ISODate("2014-05-01T17:00:00.000Z"),
    "endTime" : ISODate("2014-05-01T18:00:00.000Z")
}
不要绝望。您将在" Web Scale":http://youtu.be/b2F-DItXtZs

进行操作