「已注销」 2015-12-25 01:56 采纳率: 66.7%
浏览 5464
已采纳

mongodb的java开发中使用两个字段相等查询条件应该怎么写?

也就是类似sql中的where 字段A=字段B这样的条件,我查了下网上有些帖子中写的用$where的方式我查询的时候会出错,类似于:new Document("$where",new Document("字段A", "字段B")),驱动版本是3.0
在网上查到一个帖子:http://cache.baiducontent.com/c?m=9d78d513d99c1cf30db0c22e1a16a63e4a10d3743ca6954f2894c45cd424054e1d20a5f930236319ce95223a54b8492bbbb1602e200357ebcc8e95158cf9c1747a9574743647d71f45ce4ff88d157e9f618d50ecae1ae5bef7&p=92769a47929411a05bed9e3e53429e&newp=9c73d61885cc43b149bd9b7d0d1c89231610db2151ddce04&user=baidu&fm=sc&query=mongodb+java+where&qid=de5135d30001d035&p1=2
根据这个帖子的方法写了如下代码:
String ageStr = "function (){return 字段A==字段B};";
Document cond = new Document("$where",ageStr);
FindIterable iterable=mongodao.find(cond);
查询的时候并没有报错,但是用iterable.forEach(new Block() 循环的时候报错,请教应该怎么写才对?
另外mongodb的java开发文档哪里有比较详细的,官网上的例子实在太简单了没有更多方法的使用说明

  • 写回答

2条回答 默认 最新

  • Sc-000 2015-12-25 02:24
    关注

    首先在mongo shell 里面是 这样查询的

    db.ttt.find({})
    { "_id" : ObjectId("566e707540b73d11c02cd058"), "a" : 1, "b" : 1, "c" : 3 }

    db.ttt.find({$where:"this.a == this.b"})
    { "_id" : ObjectId("566e707540b73d11c02cd058"), "a" : 1, "b" : 1, "c" : 3 }

    转化到 java里面
    Document cond = new Document("$where","this.a == this.b");

    如果用 function的话 其实是写js代码
    function a(){
    if(this.a == this.b)
    return true
    return false
    }

    也就是写成 Document cond = new Document("$where","function a(){if(this.a == this.b){return true}return false}");

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵