• 关于

    集合查询

    的搜索结果

回答

根据你在评论中回复我的例子,你不应该把学生和班级分开来,MongoDB的做法不是这样的。 我来举个例子吧。Classes Collection你应该把学生们作为一个数组,聚合在班级collection中。操作我以MongoDB shell为例。获取学生添加学生修改学生删除学生集合是动态模式的。这意味着一个集合里面的文档可以是各式各样的。例如,下面两个文档可以存储在同一个集合里面:`{"greeting": "Hello world!"}{"foo": 5}`需要注意的是,上面的文档不光值的类型不同(一个字符串一个整数),它们的键也完全不同。因为集合里面可以放置任何文档,随之而来的一个问题是:还有必要使用多个集合吗?这的确值得思考:既然没有必要区分不同类型文档的模式,为什么还要使用多个集合呢?这里有几个重要的原因。•如果把各种各样的文档不加区分地放在同一个集合里,无论对开发者还是管理员来说都将是噩梦。开发者要么确保每次查询只返回特定类型地文档,要么让执行查询的应用来处理所有不同类型的文档。如果查询博客文章时还要剔除含有作者数据的文档,这会带来很大困扰。•在一个集合里查询特定类型的文档在速度上也很不划算,分开查询多个集合要快得多。例如,假设集合里面一个名为“type”的字段用于指明文档是skim、whole还是chunkey monkey。那么,如果从一个集合中查询这三种类型的文档,速度会很慢。但如果将这三种不同类型的文档拆分为三个不同的集合,每次只需要查询相应的集合,速度快得多。•把同种类型的文档放在一个集合里,数据会更加集中。从一个只包含博客文章的集合里查询几篇文章,或者从同时包含文章数据和作者数据的集合里查出几篇文章,相比之下,前者需要的磁盘寻道操作更少。•创建索引时,需要使用文档的附加结构(特别是创建唯一索引时)。索引是按照集合来定义的。在一个集合中只放入一种类型的文档,可以更有效地对集合进行索引。上面这些重要原因促使我们创建一个模式,把相关类型的文档组织在一起,尽管MongoDB对此并没有强制要求。

蛮大人123 2019-12-02 01:47:11 0 浏览量 回答数 0

问题

JavaSDK(标准/高级)V3的SearchParams有什么用?(3)

轩墨 2019-12-01 21:01:29 1141 浏览量 回答数 0

回答

看题目上纠结的几点貌似既要求实时又要求能够分页查询,首先很重要的一点就是预估数据量,10K的设备不多,放DB也可以,而且在分页上面更有优势,但是由于设备会不停的上线下线,这样就涉及到频繁的对DB进行增加/删除操作,那就不太合适了。所以建议使用NoSql,也就是Redis,至于使用普通的Set还是有序集合嘛:Redis有序集合的插入需要维护集合的顺序,所以相对于普通集合操作效率较低,如果说需要分页的话,其实有序集合也就支持一种排序方式,真心不觉得使用有序集合能够便于分页,稍微修改下分页规则这个有序集合就没用了。综上推荐使用普通集合,如果需要进行分页查询,可以考虑将Redis中的数据定时同步到DB,然后进行查询,Redis中的数据主要用于计算实时在线设备数量。

落地花开啦 2019-12-02 01:41:48 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

问题

mongodb创建索引后过段时间就消失了,什么原因?

落地花开啦 2019-12-01 20:03:22 1291 浏览量 回答数 2

问题

请问返回经过站点的所有线路的结果存在哪个集合里面?

天伟 2019-12-01 21:00:46 3613 浏览量 回答数 1

问题

hibernate 只查询部分字段,如果字段中有集合,该如何查询呢?报错

爱吃鱼的程序员 2020-06-08 13:30:16 0 浏览量 回答数 1

回答

键值对,是key-value的形式,而集合是多个元素集合在一起。最主要的区别是当进行等值查询时,键值对更有优势。然而进行范围查询是集合优势更大一些。

ccx_rw 2019-12-02 03:08:30 0 浏览量 回答数 0

问题

mongodb 如何设计包含收支明细的数据库?

蛮大人123 2019-12-01 19:53:44 1167 浏览量 回答数 1

问题

MongoMapper Model如何进行关联查询?

落地花开啦 2019-12-01 19:46:53 1162 浏览量 回答数 0

问题

dao类循环单个查询和批量查询,哪个效率高?

落地花开啦 2019-12-01 20:04:26 1420 浏览量 回答数 1

回答

1、List(有序、可重复) List里存放的对象是有序的,同时也是可以重复的,List关注的是索引,拥有一系列和索引相关的方法,查询速度快。因为往list集合里插入或删除数据时,会伴随着后面数据的移动,所有插入删除数据速度慢。 2、Set(无序、不能重复) Set里存放的对象是无序,不能重复的,集合中的对象不按特定的方式排序,只是简单地把对象加入集合中。 3、Map(键值对、键唯一、值不唯一) Map集合中存储的是键值对,键不能重复,值可以重复。根据键得到值,对map集合遍历时先得到键的set集合,对set集合进行遍历,得到相应的值。

游客lz7tjhznmiyda 2019-12-02 01:03:53 0 浏览量 回答数 0

问题

求教个mongodb的查询优化问题,这是查询条件: .find({ "tenantId" : "qiqiao001" , "name" : { "$regex" : "^.*我的应用22.*$" , "$options" : "i"}}).sort({"updateTime":-1}); 我需要模糊查询name,使用时间倒序查询,数据集合有100w,时间字段updateTime我已经加了索引,数据库直接查询时间需要1.5s以上,求优化一下查询, 单独使用模糊查询或时间排序查询都很快,两个结合在一起就需要1

李博 bluemind 2019-12-01 19:33:28 631 浏览量 回答数 3

回答

如果查询以活动为主,则在活动集合下文档增添参加人的数组; 以查询人的活动为主,则在人的集合下增添; 两者兼顾或者统计较多就按你这样的设计;

落地花开啦 2019-12-02 01:43:40 0 浏览量 回答数 0

问题

如何提高mongodb查询速度

落地花开啦 2019-12-01 19:56:52 1577 浏览量 回答数 1

回答

1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;3.代码中存在死循环或循环产生过多重复的对象实体;4.使用的第三方软件中的BUG;5.启动参数内存值设定的过小;2.Java代码导致错误的解决: 重点排查以下几点:1)检查代码中是否有死循环或递归调用。2)检查是否有大循环重复产生新对象实体。3)检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。4 )检查List、MAP等集合对象是否有使用完后,未清除的问题。List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。查询数据时,一次查询过多的数据,后来调整了该部分的代码,每次只取出指定量的数据,成功的解决该问题。 出现OutOfMemoryError,发现session的资源一直没有被释放产生的,最好通过session的invalidate()方法将session的资源释放。 程序中出现死循环。 4.tomcat部署、运行出现OutOfMemoryError,加大内存参数值,解决此问题。

a123456678 2019-12-02 02:12:50 0 浏览量 回答数 0

问题

关于dao类循环单个查询和批量查询哪个效率高的问题?

a123456678 2019-12-01 20:23:09 1834 浏览量 回答数 2

问题

mongodb中对于一个大集合如何做到每次只取一点分段取完一个集合?

蛮大人123 2019-12-01 19:51:56 937 浏览量 回答数 1

回答

out可以输出到某个集合,然后对该集合查询,分页

落地花开啦 2019-12-02 01:41:57 0 浏览量 回答数 0

回答

out可以输出到某个集合,然后对该集合查询,分页

蛮大人123 2019-12-02 02:47:19 0 浏览量 回答数 0

回答

Collection 总接口 --| List 特征 有序 可重复 ----| ArrayList 底层维护的是一个Object类型的数组,如果使用无参构造方法创建ArrayList集合,默认的容量为10 ​ 用带有参数的构造方法,创建ArrayList集合,传入的initCapacity是多少,容量就是多少 ​ 特征: 增删慢 查找快 ​ newCapacity = oldCapacity + (oldCapacity >> 1) 二进制位运算 ----| LinkedList 底层维护的是一个双向链表 特征是增删快 查找慢 ----| Vector 线程安全的ArrayList 和ArrayList基本相同,JDK1.0的古老产物。效率低于ArrayList --| Set 特征 无序 不可重复 ----| HashSet 底层维护是一个哈希表,存储效率极高 ​ 一个自定义类对象放入到HashSet中,需要经历如下过程: ​ 通过当前类对象的HashCode,获取到当前类对象的哈希值,进行移位运算,计算出当前元素应该保存到哈希表中的位置。 ​ 情况1: 当前位置没有元素,直接放入 ​ 情况2: 当前位置已经存在其他元素。需要调用该元素的equals方法,进行比较,如果比较结果为两个元素不同,能够放入,两个元素相同,不能放入。 ----| TreeSet 树形结构的Set集合 ​ 能够放入TreeSet中的元素必须有自然顺序,或者提供【比较规则】 ​ 一个自定义类对象,想要放入到TreeSet集合中,有两种方式 ​ 1. 当前类【遵从】Comparable接口,实现compareTo(Object o)方法 ​ 2. 实现一个自定义的比较器【遵从】Comparator接口,实现compare(Object o1, Object o2)方法 Collection中的方法 //添加方法: add(Object o) //添加指定元素 addAll(Collection c) //添加指定集合 //删除方法: remove(Object o) //删除指定元素 removeAll(Collection c) //输出两个集合的交集 retainAll(Collection c) //保留两个集合的交集 clear() //清空集合 //查询方法: size() //集合中的有效元素个数 toArray() //将集合中的元素转换成Object类型数组 //判断方法: isEmpty() //判断是否为空 equals(Object o) //判断是否与指定元素相同 contains(Object o) //判断是否包含指定元素 containsAll(Collection c) //判断是否包含指定集合 List中的方法 //添加方法: add(int index, Object o) //向指定位置添加元素 addAll(int index, Collection c) //向指定位置添加集合 //删除方法 remove(int index) //删除指定元素 //查询方法: get(int index) //获取指定位置的元素 indexOf(Object o) //获取指定元素的位置 lastIndexOf(Object o) //获取指定元素最后一次出现的位置 //修改方法: subList(int fromIndex, int toIndex) //截取子集合从fromIndex到toIndex,要头不要尾 set(int index, Object o) //修改指定位置的元素 ArrayList中特有的方法 ensureCapacity(int minCapactiy) //判断当前数组中的元素个数是否大于指定的minCapacity trimToSize() //修改数组容量为当前数组有效元素个数 LinkedList中特有的方法 //查询方法: getFirst() //获取集合中的第一个元素 getLast() //获取集合中的最后一个元素 //添加方法: addFirst(Object o) //在集合的第一个位置添加指定元素 addLast(Object o) //在集合的最后一个位置添加指定元素 //删除方法: removeFirst() //删除集合中的第一个元素 removeLast() //删除集合中的最后一个元素 Collection中的迭代器Iterator方法 Iterator iterator(); //迭代器构造方法 boolean hasNext() //判断是否有下一个元素 Object next() //获取当前元素 void remove() //删除通过next()获取的元素,在next()之后使用,不可以单独使用 List中的迭代器 ListIterator方法 ListIterator listIterator(); //迭代器构造函数 boolean hasNext() //判断是否有下一个元素 boolean hasPrevious() //判断是否有上一个元素 Object next() //获取当前元素 Object previous() //获取上一个元素 void remove() //删除通过next()获取的元素,在next()之后使用,不可以单独使用 add(Object o) //添加指定元素 set(Object o) //修改指定元素 int nextIndex() //获取当前元素所在位置

景凌凯 2020-04-07 17:20:03 0 浏览量 回答数 0

问题

有什么数据库对集合和JSON类型的数据支持是比较好的呢?

a123456678 2019-12-01 20:13:19 2689 浏览量 回答数 1

问题

关于 Mongodb 的聚合查询实现

蛮大人123 2019-12-01 19:58:50 1014 浏览量 回答数 1

问题

mongoose如何进行高维度查询?

蛮大人123 2019-12-01 19:56:33 854 浏览量 回答数 1

问题

mongodb如何对含有内嵌数组的集合进行检索

a123456678 2019-12-01 20:12:03 903 浏览量 回答数 1

问题

如何删除文档

云栖大讲堂 2019-12-01 21:29:45 1022 浏览量 回答数 0

回答

MongoDB 的设计目标是高性能、可扩展、易部署、易使用,存储数据非常方便。其主要功能特性如下。(1)面向集合存储,容易存储对象类型的数据。在MongoDB 中数据被分组存储在集合中,集合类似RDBMS 中的表,一个集合中可以存储无限多的文档。(2)模式自由,采用无模式结构存储。在MongoDB 中集合中存储的数据是无模式的文档,采用无模式存储数据是集合区别于RDBMS 中的表的一个重要特征。(3)支持完全索引,可以在任意属性上建立索引,包含内部对象。MongoDB的索引和RDBMS 的索引基本一样,可以在指定属性、内部对象上创建索引以提高查询的速度。除此之外,MongoDB 还提供创建基于地理空间的索引的能力。(4)支持查询。MongoDB 支持丰富的查询操作,MongoDB 几乎支持SQL中的大部分查询。(5)强大的聚合工具。MongoDB 除了提供丰富的查询功能外,还提供强大的聚合工具,如count、group 等,支持使用MapReduce 完成复杂的聚合任务。(6)支持复制和数据恢复。MongoDB 支持主从复制机制,可以实现数据备份、故障恢复、读扩展等功能。而基于副本集的复制机制提供了自动故障恢复的功能,确保了集群数据不会丢失。(7)使用高效的二进制数据存储,包括大型对象(如视频)。使用二进制格式存储,可以保存任何类型的数据对象。(8)自动处理分片,以支持云计算层次的扩展。MongoDB 支持集群自动切分数据,对数据进行分片可以使集群存储更多的数据,实现更大的负载,也能保证存储的负载均衡。(9)支持Perl、PHP、Java、C#、JavaScript、Ruby、C 和C++语言的驱动程序,MongoDB 提供了当前所有主流开发语言的数据库驱动包,开发人员使用任何一种主流开发语言都可以轻松编程,实现访问MongoDB 数据库。(10)文件存储格式为BSON(JSON 的一种扩展)。BSON 是对二进制格式的JSON 的简称,BSON 支持文档和数组的嵌套。(11)可以通过网络访问。可以通过网络远程访问MongoDB 数据库。 答案来源于网络

养狐狸的猫 2019-12-02 03:01:28 0 浏览量 回答数 0

回答

HashSet和TreeSet是Set的两个典型实现,到底如何选择HashSet和TreeSet呢?HashSet的性能总是比TreeSet好(特别是最常用的添加、查询元素等操作),因为TreeSet需要额外的红黑树算法来维护集合元素的次序。只有当需要一个保持排序的Set时,才应该使用TreeSet,否则都应该使用HashSet。HashSet还有一个子类:LinkedHashSet,对于普通的插入、删除操作,LinkedHashSet比HashSet要略微慢一点,这是由维护链表所带来的额外开销造成的;不过,因为有了链表,遍历LinkedHashSet会更快。EnumSet是所有Set实现类中性能最好的,但它只能保存同一个枚举类的枚举值作为集合元素。必须指出的是,Set的三个实现类HashSet、TreeSet和EnumSet都是线程不安全的。如果有多个线程同时访问一个Set集合,并且有超过一个线程修改了该Set集合,则必须手动保证该Set集合的同步性。通常可以通过Collections工具类的synchronizedSortedSet方法来“包装”该Set集合。此操作最好在创建时进行,以防止对Set集合的意外非同步访问。

星尘linger 2020-04-12 00:06:16 0 浏览量 回答数 0

问题

mongodb集群分片数据查询问题

落地花开啦 2019-12-01 19:57:04 1145 浏览量 回答数 1

问题

Mongodb如何分段取一个集合

蛮大人123 2019-12-01 19:56:38 1116 浏览量 回答数 1

问题

presto查询区分大小写的数据库(mysql,mongo)表,报错表名不存在?报错

爱吃鱼的程序员 2020-06-07 22:28:20 0 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站