mongodb用子文档做为查询条件的两种方法

    {
      "_id": ObjectId("52fc6617e97feebe05000000"),
      "age": 28,
      "level": NumberInt(500),
      "name": "name5",
      "person": [
        {
          "level": 5,
          "score": 100,
        "ccc":{"ccc3":56,"fff3":78}
        },
        {
          "level": 7,
          "score": 90,
          "like": "music"
        }
      ],
      "score": NumberInt(500),
      "sex": "男"
    }

  方法一:

db.testColl.find({"person.level":7});

db.testColl.find({"person.ccc.ccc3":56});

  

均可查出结果,就是说这种方法可以嵌套使用!

方法二、使用$elemMatch操作符

db.testColl.find({"person":{"$elemMatch":{"level":5}}});

  

可以查出结果

db.testColl.find({"person":{"$elemMatch":{"ccc":{"$elemMatch":{"ccc3":56}}}}});

  

无法查出结果

db.testColl.find({"person":{"$elemMatch":{"ccc":{"ccc3":56,"fff3":78}}}});

db.testColl.find({"person":{"$elemMatch":{"ccc.ccc3":56}}});

  

可以查出结果
也就是说第二种方法不能嵌套使用。

时间: 2024-10-20 20:34:20

mongodb用子文档做为查询条件的两种方法的相关文章

批量改变文件夹和子文件夹中图片格式的两种方法

生活中,我们通常会遇到这种问题:一个文件夹内部有多个子文件夹,每个文件夹内部有很多图片,我们想改变这些图片的格式. 例如.png格式图片支持背景透明,但我们想把它变成背景不透明的.jpg图片.又比如.bmp格式是非压缩图片,我们想把它转换为无损压缩的.png图片以节省存储空间. 如果图片数量很少,很明显我们可以通过Windows自带的画图工具或者其他看图软件通过“另存为”一张张地转换图片格式.但是如果图片很多,怎么办? 这个问题其实有两个关键点: ① 要求批量处理. ② 文件夹中还有子文件夹.

做隧道转发的 正反 两种方法

背景: 在部署开发中我们会经常用到 有多台服务器 这几台只是在局域网内如(10, 11,12,13,14,15,16,17) 有一台专门用来做转发的机器 现在我们要实现的是 在我们的本机 去测试 局域网内的某一台机器如(17) 在这台机器上我们可以做测试 如把passenger 部署 改为 thin 等等一些测试 介绍: 10.0.1.17:80  为 局域网 80 为 局域网的端口 [email protected] -p 6521 为转发机器所谓 跳板机 8080 为本机的访问端口 如访问

用easyui实现查询条件的后端传递并自动刷新表格的两种方法

用easyui实现查询条件的后端传递并自动刷新表格的两种方法 搜索框如下: 通过datagrid的load方法直接传递参数并自动刷新表格 通过ajax的post函数传递参数并通过loadData方法将数据初始化到表格中 js代码(搜索按钮的点击事件部分): $("#standardQueryBtn").click(function(){//点击搜索按钮的触发事件 if($("#offerid").val() != ""){//判断id搜索框的值是

快速生成较大文本文档的两种方法

在学习用FTP发送文件的过程中,需要用到一个比较大的文件进行传输测试.因此百度了一下如何生成指定大小文件的方法,发现在WINDOWS下有两种方法比较实用,记录如下: 第一种方法: 在运行窗口中输入CMD命令回车,进入命令行模式. 在此界面下输入:"fsutil file creatnew test.txt 1024"即可产生一个占用空间为1024字节,名为test.txt的文本. 命令中1024即为该文件占用空间大小,可以任意指定.比如输入1048576就可以产生一个1M大小的文件.当

MongoDB实现分页(两种方法)

1.插入实验数据 偷懒用下samus,100条. 1 for (int i = 0; i < 100; i++) 2 { 3 Document doc = new Document(); 4 doc["ID"] = i; 5 doc["Msg"] = "value is "+ i; 6 mongoCollection.Insert(doc); 7 } 插入成功 2.分页 方法一:通过sike()与limit()方法 如下图, 通过 db.m

JdbcTemplate查询数据中两种处理结果集方法的简单比较

public List<Cat> listCats(){ //多条数据查询 String sql = "select id, name, description, mother_id, createDate from tbl_cat"; /*//方法1.使用RowMapper<Cat>处理结果集 return jdbcTemplate.query(sql, new RowMapper<Cat>(){ @Override public Cat mapR

[MongoDB学习笔记-02] Node.js连接MongoDB的两种方法

MongoDB Node.js驱动程序是被官方所支持的原生Node.js驱动程序,他是至今为止最好的实现, 并且得到了MongoDB官方的支持.MongoDB团队已经采用MongoDB Node.js驱动程序作为标准方法. npm install mongodb@1.4.3 // MongoDB Node.js驱动程序 npm install mongoose@3.8.8 //mongoose模块 要从Node.js连接MongoDB数据库我们有两种方法可选择: 通过实例化mongodb模块中提

oracle 查询当天记录 三种方法效率比较

-- 查询一表中当天生成的数据 -- 原表mobilefrends中的cdate字段上有索引,创建索引语句是:create index mobilefrends_cdate_idx on mobilefrends(cdate); --------------------------------------------------------------------------------------------------------------------- -- 方法一:用to_char()

SQL Server 存储过程中处理多个查询条件的几种常见写法分析,我们该用那种写法

本文出处: http://www.cnblogs.com/wy123/p/5958047.html 最近发现还有不少做开发的小伙伴,在写存储过程的时候,在参考已有的不同的写法时,往往很迷茫,不知道各种写法孰优孰劣,该选用那种写法,以及各种写法优缺点,本文以一个简单的查询存储过程为例,简单说一下各种写法的区别,以及该用那种写法专业DBA以及熟悉数据库的同学请无视. 废话不多,上代码说明,先造一个测试表待用,简单说明一下这个表的情况 类似订单表,订单表有订单ID,客户ID,订单创建时间等,查询条件是