NutzCN Logo
问答 mongodb链式查询
发布于 2696天前 作者 qq_03cb392c 2558 次浏览 复制 上一个帖子 下一个帖子
标签:

想要得出appid>3 并且affid=2的数据,我没找到怎么链式相等
写了如下代码让affid大于等于2 ,又小于等于2 来寻找affid=2
DBCursor doc = ZMoCoinstalltest.find(ZMoDoc.M("appid","$gt","3").m("affid","$lte","2").m("affid","$gte","2"));//

问:
怎么让他链式相等的那个方法我没找到

13 回复

$eq 就好了吧?

@wendal $eq 不行,mongodb不识别这个;
想起来$in这个了,可以,就是不知道效率咋样

版本低?应有的啊

@wendal 直接下载的mongodb的薄封装项目学习的。

我是说mongodb的版本

@wendal $or怎么写

我写的ZMoCoinstalltest.find(ZMoDoc.M("$or","affid",ZMoDoc.NEW("$lte","2")).gt("appid","2"));
结果:2017-6-29 17:48:44.279 DEBUG [http-nio-80-exec-4] db.installtest.find({ "$or" : { "affid" : { "$lte" : "2"}} , "appid" : { "$gt" : "2"}})
17-06-29 17:48:44.287 WARN [http-nio-80-exec-4] Error@/mongodb/find1 :
com.mongodb.MongoQueryException: Query failed with error code 13262 and error message '$or requires nonempty array' on server 192.168.1.152:27017
我知道or要查询的为数组,可是用ZMoDoc连不起来

。。。 这个链式不了了。。。

@wendal 咳咳咳 意思是or这个查询操作不了么?

@wendal
ZMoDoc doc0 = ZMoDoc.NEW("affid",ZMoDoc.NEW("$lte","2"));
ZMoDoc doc1 = ZMoDoc.NEW("appid",ZMoDoc.NEW("$gte","2"));
就是这两个ZMoDoc ,满足任意一个都可以,试不出来

    public static void main(String[] args) {
        ZMoDoc doc0 = ZMoDoc.NEW("affid",ZMoDoc.NEW("$lte","2"));
        ZMoDoc doc1 = ZMoDoc.NEW("appid",ZMoDoc.NEW("$gte","2"));
        ZMoDoc query = ZMoDoc.NEW("$or", new Object[]{doc0.toMap(), doc1.toMap()});
        System.out.println(query);
    }

@wendal 厉害了我的兽总大大 !!完美解决

添加回复
请先登陆
回到顶部