morphia 框架 mongodb内嵌查询
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();
morphia 框架 mongodb内嵌查询的更多相关文章
- 框架和内嵌框架--->frameset 和 iframe 的文档对象
框架和内嵌框架分别用 HTMLFrameElemnt 和 HTMLIFrameElement 表示,它们在 DOM2 中有一个新属性----->contentDocument,是一个指针,表示框 ...
- mongodb内嵌文档的查询
本文转自:http://blog.163.com/wm_at163/blog/static/1321734902012526103825481/ 1 > db.blog.findOne() { ...
- MongoDB 内嵌文档
MongoDB是文档型的数据库系统,doc是MongoDB的数据单位,每个doc相当于关系型数据库的数据行(row),doc和row的区别在于field的原子性:row中的column是不和分割的原子 ...
- 补习系列(17)-springboot mongodb 内嵌数据库
目录 简介 一.使用 flapdoodle.embed.mongo A. 引入依赖 B. 准备测试类 C. 完善配置 D. 启动测试 细节 二.使用Fongo A. 引入框架 B. 准备测试类 C.业 ...
- mongodb内嵌文档的javaapi,增删改查
数据结构: {"_id" : "000000001", //Mongodb默认主键 "UID" : "000000001&quo ...
- 补习系列(17)-springboot mongodb 内嵌数据库【华为云技术分享】
目录 简介 一.使用 flapdoodle.embed.mongo A. 引入依赖 B. 准备测试类 C. 完善配置 D. 启动测试 细节 二.使用Fongo A. 引入框架 B. 准备测试类 C.业 ...
- MongoDB内嵌文档操作
实体定义: [BsonIgnoreExtraElements] public class Person : BaseEntity { public string FirstName { get; se ...
- Mongodb内嵌数组的完全匹配查询
样例数据: { "cNo" : "11", "Details" : [ { &q ...
- Mongodb内嵌对象关联查询
db.-10-30T00:00:00Z"),"$lt":ISODate("2018-10-30T23:59:00Z")}, "equip.$ ...
随机推荐
- qt MessageBOX 消息
void MessageBox::slotQuestion() { switch(QMessageBox::question(this,"Question",tr("It ...
- python 进程池的使用
进程同步 进程的数据是独立存在的,进程也能加锁. from multiprocessing import Process, Lock def f(l,i): l.acquire() print('he ...
- 自学git心得-1
Github作为目前世界上最先进的分布式版本控制系统,是软工工作者管理工程代码的不二选择,笔者也是因时所需,自学了基本的git操作,在此回顾一下也作为分享. 推荐学习资源:https://www.li ...
- python3 报错:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 201: invalid continuation byte
代码: # -*- coding:utf-8 -*- from urllib import request resp = request.urlopen('http://www.xxx.com') p ...
- java 中linq 的使用方式 筛选 查找 去重
1.筛选 $.Enumerable.From(value).Where(function(x) {//value 为被操作的内容 return x.name == name;//第一个name为val ...
- ARC以及MRC中setter方法的差异
ARC以及MRC中setter方法的差异 有时候,你会需要重写setter或者getter方法,你知道么,ARC与MRC的setter方法是有着差异的呢. 先看下MRC下的setter方法: 在看下A ...
- 阿里云OSS 上传文件SDK
Aliyun OSS SDK for C# 上传文件 另外:查找的其他实现C#上传文件功能例子: 1.WPF用流的方式上传/显示/下载图片文件(保存在数据库) (文末有案例下载链接) 2.WPF中利用 ...
- Python学习---Python下[字典]的学习
Python中唯一的映射类型(哈希表) -->Java中的HashMap<K,V> Python对key进行了哈希函数运算,根据计算的结果决定value的存储地址,所以字 ...
- JQuery里ajax的表单传值serialize()用法
本文导读:在jQuery中,当我们使用ajax时,常常需要拼装 input数据以键值对(Key/Value)的形式发送到服务器,用JQuery的serialize方法可以轻松的完成这个工作 ...
- GO语言(八) defer注意点
package main import ( "net" "os" "fmt" "io/ioutil" ) func Cl ...