博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
morphia查询mongodb内嵌文档
阅读量:5142 次
发布时间:2019-06-13

本文共 1342 字,大约阅读时间需要 4 分钟。

mongodb中存储的文档格式如下,实现查询fromdata下did和dvid为指定值的数据

{  "_id": {    "$oid": "553f4a9facc494278f5ad1b0"  },  "rid": "9eec7fbe8a6f4d17b02756fdbcefcc41",  "rname": "测试场景1",  "username": "zhaoptest",  "enable": 1,  "fromdata": [    {      "did": "aaa",      "dvid": "1",      "opt": "3",      "value": "44"    },    {      "did": "bbb",      "dvid": "1",      "opt": "3",      "value": "44"    }  ],  "todata": [    {      "did": "aaa",      "dvid": "2",      "value": "3"    },    {      "did": "ccc",      "dvid": "2",      "value": "3"    }  ]}

使用db.device_rules.find({ "fromdata.did" : "bbb", "fromdata.dvid" : "1" })进行查询fromdata中did=bbb,dvid=1的数据

但当查询did=bbb,dvid=2时,仍能查出上面的结果,查询条件和数组中不同的文档进行了匹配!

利用条件操作符“$elemMatch”可以组合一组条件,并且还能达到的“点表示法”的模糊查询的效果,如下:

db.device_rules.find({ "fromdata" : { "$elemMatch" : { "did" : "bbb", "dvid" : "2" } } })

 

使用morphia进行查询:

1. 针对 db.device_rules.find({ "fromdata.did" : "bbb", "fromdata.dvid" : "1" })

this.createQuery().field("fromdata.did").equal(fromDid).field("fromdata.dvid").equal(fromDvid).asList();

 

2 针对 db.device_rules.find({ "fromdata" : { "$elemMatch" : { "did" : "bbb", "dvid" : "2" } } })

FromData fd = new FromData();        fd.setDid(fromDid);        fd.setDvid(fromDvid);        return this.createQuery().field("fromdata").hasThisElement(fd).asList();

 

转载于:https://www.cnblogs.com/iiot/p/4463873.html

你可能感兴趣的文章
1066. Root of AVL Tree (25)
查看>>
maven的pom.xml用<exclusion>解决版本问题
查看>>
JSP—page指令
查看>>
NOIP的基本模板合集(2)
查看>>
openscales2.2 的初始缩放等级
查看>>
hdu 4310 Hero
查看>>
mac中使用vi修改二进制文件
查看>>
css3 box-sizing属性
查看>>
copy_from_user 详解
查看>>
spring-AOP(面向切面编程)-注解方式配置
查看>>
Sping
查看>>
UI design principle android 系统根据不同屏幕密度选择不同图片
查看>>
Flume日志收集
查看>>
adb usage
查看>>
java初学2
查看>>
如何免费上传4G以上大文件至百度云网盘
查看>>
webstorm激活
查看>>
PHP 二叉树 二叉排序树实现
查看>>
GridView 动态列上方添加相应的Combox等控件
查看>>
申请开发者账号
查看>>