【MongoDB】数组和范围查询的相互作用

文档中的标量(非数组元素)必须与查询条件中的每一条语句相匹配。例如,如果使用{“x”:{"$gt":10, "$lt":20}进行查询,只会匹配“X”键的值大于等于10并且小于等于20的文档。但是假如某个文档的x字段是一个数组,如果x的键的某一个元素与查询的任何一条语句相匹配,那么这个文档就会返回。比如例子如下:

现在希望找到age的值在于10和20之间的所有文档:

从上图可以看出:

1. 可以使用‘$elemMatch’要求Mongodb同事使用查询条件中两个语句与一个数组元素进行比较,并且该标签不会匹配非数组元素。

2. 使用min和max时候一定要该字段添加索引,要不添加就会报错。

时间: 2024-10-13 05:51:34

【MongoDB】数组和范围查询的相互作用的相关文章

MongoDB 数组字段的查询和更新

MongoDB是文档型数据库,每个文档(doc)表示数据的一项记录.相比关系型DB的row只能使用简单的数据类型,doc能够使用复杂的数据类型:内嵌doc,数组.MongoDB的数组是一系列元素的集合,使用中括号 [] 表示数组,例如:[1,2,3]的元素是整数值,[{name:"t5"}, {name:"t7"}],[ {name:"t5", age:21}, {name:"t7", age:22} ]的元素是doc. 创建

MongoDB学习笔记五—查询

数据准备 { "goods_id" : 1, "goods_name" : "KD876", "createTime" : ISODate("2016-12-21T11:19:39.010Z") } { "goods_id" : "4", "goods_name" : "诺基亚N85原装充电器", "createTim

mongodb高级操作(2)-查询

1.查询文档find介绍 mongodb中使用find来进行查询.find的第一个参数决定了要返回哪些文档,这个参数是一个文档,用于指定查询条件. 如果不指定条件默认就是{},那么就是查询所有文档. > db.test.find() { "_id" : ObjectId("573c858c323f7f2e2ccb0e17"), "name" : "brent", "age" : 43, "s

MongoDB数组修改器更新数据

MongoDB数组修改器更新数据 2013-04-22 10:20:40      我来说两句    来源:姜志福 的BLOG    收藏  我要投稿 MongoDB数组修改器更新数据 这里,我们将了解一下数组修改器.数组,是我们经常看到和使用到的且非常有用的数据结构:它不仅可以通过索进行引用,还可以作为集合来使用.数组修改器,顾名思义,它是用来修改数组的,而不能用来修改整数或者字符串.数组修改器不多,就那么几个,但熟练掌握它后,将给我们带来非常方便的操作.下面,我们来了解一下: > db.us

MongoDB数组修改器更新数据(转)

MongoDB数组修改器更新数据 这里,我们将了解一下数组修改器.数组,是我们经常看到和使用到的且非常有用的数据结构:它不仅可以通过索进行引用,还可以作为集合来使用.数组修改器,顾名思义,它是用来修改数组的,而不能用来修改整数或者字符串.数组修改器不多,就那么几个,但熟练掌握它后,将给我们带来非常方便的操作.下面,我们来了解一下: > db.user.findOne() { "_id" : ObjectId("4ffcb2ed65282ea95f7e3304"

mongodb 学习笔记 03 -- 查询表达式

mongodb 学习笔记 03 – 查询表达式 不等于,大于,小于 !=: db.stu.find({name:{$ne:'billvsme'}}) 名字不是'billvsme' > : db.stu.find({age:{$gt:18}}) 年纪大于18 < : db.stu.find({age:{$lt:18}}) 年纪小于18 >=: $gte <=: $lte in/not in/all $in :db.goods.find(stu_id:{$in:[93001,93002

MongoDB多条件分页查询,新增,删除操作

概述 日志信息记录到MongoDB中,然后多条件查询 程序界面 MongoDBTools.java package com.admin.utils; import java.lang.reflect.Field; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; import org.apache.log4

hashSet的底层是数组,其查询效率非常高

如果偷懒,没有设定equals(),就会造成返回hashCode虽然结果相同,但在程序执行的过程中会多次地调用equals(),从而影响程序执行的效率. 我们要保证相同对象的返回的hashCode一定相同,也要保证不相同的对象的hashCode尽可能不同(因为数组的边界性,hashCode还是可能相同的).例子: public int hashCode(){ return name.hashcode()+age; } 这个例子保证了相同姓名和年龄的记录返回的hashCode是相同的. 使用has

Mongodb 数组查询

插入多条测试数据> for(i=1;i<=1000;i++){... db.blog.insert({"title":i,"content":"mongodb测试文章.","name":"刘"+i});                                                      ... } db.blog.list.find().limit(10).forEach(