MongoDB:怎样在一次查询中执行多次解引用?
怪我咯
怪我咯 2017-04-24 09:10:28
0
1
613

我设定了几个集合,Country, Province, City, Univ.

country和province,province和city,city和univ之间都是一对多的关系。通过引用连接。

现在我想知道,一个country中有哪些univ,这个要怎么做?假设该country为country0.

文档结构如下:

{
    _id:"country0",
    provinces:[
    {
        $ref:"Province",
        $id:"province0"
    },
    ...
    ] 
}

{
    _id:"province0",
    belongs:{$ref:"Country", $id:"country0"},
    cities:[
    {
        $ref:"City",
        $id:"city0"
    }
    ...
    ]
}

{
    _id:"city0",
    belongsTo:{$ref:"Province",$id:"province0"},
    univs:[
    {
        $ref:"Univ",
        $id:"univ0"
    }
    ...
    ]
}

{
    _id:"univ0",
    address:{$ref:"City", $id:"city0"}
}

我找过一些资料,如果country只有一个,并且涉及到的引用不超过两层,可以用fetch()函数。但是这里至少有3层了。

也看到有人介绍引用的时候说可以用python驱动,但是用python驱动的话,就不好记录查询性能了。

我自己的思路是:

  1. 获取所有属于country0的province.
  2. 获取所有属于1中province的city。
  3. 最后获得city中的所有univ。

但是涉及到的命令太多了,显得繁琐

怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(1)
小葫芦

Oleh kerana bandar/wilayah/negara universiti jarang mungkin berubah, penyelesaian yang betul ialah menambah medan ini pada dokumen universiti dan mengindeksnya.

{
_id:"univ0",
lokasi: { bandar: { }, wilayah: {}, negara: {} }
}

db.university.ensureIndex({"location.country":1});

Anda boleh memilih untuk menggunakan DBRef atau terus menyimpan nama bandar/daerah/negara.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan