我们可以看到在Collections组中形成的查询吗?

时间:2013-01-30 11:18:04

标签: mongodb

我正在使用一个使用MongoDB的现有基于java的应用程序

在其中一个课程中,我看到了一个mongo db组,如下所示

BasicDBList result = (BasicDBList) coll.group(key, cond, initial, reduce);

其中keycondinitial是三个不同的BasicDBObject,而reduce是一个字符串形式的函数

我的问题是我们可以看到形成的查询吗?

1 个答案:

答案 0 :(得分:2)

如果您拥有MongoDB Java驱动程序的源代码,可以查看com.mongodb.GroupCommand以了解如何构建此查询,它看起来像这样:

    BasicDBObject args  = new BasicDBObject();
    args.put( "ns" , input );
    args.put( "key" , keys );
    args.put( "cond" , condition );
    args.put( "$reduce" , reduce );
    args.put( "initial" , initial );
    if ( finalize != null )
        args.put( "finalize" , finalize );
    return new BasicDBObject( "group" , args );

这转化为组命令(http://docs.mongodb.org/manual/reference/command/group/),如下所示:

{ "group" : { "ns" : "coll" , 
              "key" : {<keys>} , 
              "cond" : {<cond>} , 
              "$reduce" : "<reduce>" , 
              "initial" : { }
            }
}