存在具有父引用(也称为邻接列表)的树结构 . MongoDB集合数据示例如下:

/* 1 */
{
    "id" : 1,
    "name": "Digital Cameras",
    "url" : "digital-cameras",
}

/* 2 */
{
    "id" : 2,
    "name": "Nikon",
    "url" : "nikon",
    "parent_url": "digital-cameras"
}

/* 3 */
{
    "id" : 3,
    "name": "Canon",
    "url" : "canon",
    "parent_url": "digital-cameras"
}

/* 4 */
{
    "id" : 4,
    "name": "Film cameras",
    "url" : "film-cameras"
}

树结构如下:

Digital Cameras
|__Nikon
|__Canon

Film Cameras

如何找到没有孩子的物品(又名树叶术语)?在我的示例中,结果应指向 NikonCanonFilm Cameras 组 .

我有一个查询来查找子项:

self.db.groups.find({'parent_url': {'$exists': True}})

因此,对于我需要的每个记录A,没有记录B,其中B.parent_url = A.url .

我的堆栈是python 2.7,mongodb 2.6.5,pymongo 3.4 .