Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用java在mongodb中编写嵌套查询_Javascript_Mongodb_Database - Fatal编程技术网

Javascript 如何使用java在mongodb中编写嵌套查询

Javascript 如何使用java在mongodb中编写嵌套查询,javascript,mongodb,database,Javascript,Mongodb,Database,我必须使用mongodb中的数据库。其中一个文件如下: {name:"tom", locs:[{loc:"ca", type:0},{loc:"ny", type:1}]} {name:"jack", locs:[{loc:"ca", type:0},{loc:"fl", type:2}]} {name:"tina", locs:[{loc:"oh", type:3}]} 另一方面: {loc:"ca", area:163696, desc:"xxxx"} {loc:"ny", area:54

我必须使用mongodb中的数据库。其中一个文件如下:

{name:"tom", locs:[{loc:"ca", type:0},{loc:"ny", type:1}]}
{name:"jack", locs:[{loc:"ca", type:0},{loc:"fl", type:2}]}
{name:"tina", locs:[{loc:"oh", type:3}]}
另一方面:

{loc:"ca", area:163696, desc:"xxxx"}
{loc:"ny", area:54556, desc:"yyyy"}
{loc:"fl", area:65755, desc:"zzzz"}
{loc:"wa", area:71362, desc:"aaaa"}
我想使用java(mongo java驱动程序)编写查询,以查找第一个数据库中出现的具有指定“name”的LOC,并根据第二个数据库中的“area”字段进行排序。对于名称['tom'、'jack'],得到如下结果:

{loc:"ca", area:163696, desc:"xxxx"}
{loc:"fl", area:65755, desc:"zzzz"}
{loc:"ny", area:54556, desc:"yyyy"}
因为我的数据库非常大,所以我无法通过两个查询连接字符串,第一个查询从第一个数据库获取所有LOC,然后将它们连接到['ca','ny','fl',],然后使用$in进行连接

此外,我还可以在mongo客户端中使用javascript查询来实现这一点,即:

db.y.find({'loc':{'$in':
    db.x.find({'name':{'$in':['tom', 'jack']}}).map(function(x){
        return x.locs.map(function(x){
            return x.loc;
        });
    }).reduce(function(x, y){
        return x.concat(y);
    })
}}).sort({'area':-1}).limit(50);
但由于我的数据库是分片的,所以我不能使用db.runCommand(“eval”,query)来评估分片数据库的javascript查询。那么,如何在java中使用mongo java驱动程序来实现这一目标呢