当前位置:首页 » 存储配置 » mongodb嵌套存储

mongodb嵌套存储

发布时间: 2023-01-07 16:56:35

A. mongodb数据库安装包里集合怎么存储

1)列出当前的数据库
MongoDB shell version: 1.8.1
connecting to: test
> show dbs -www.linuxidc.com-
admin 0.03125GB
local (empty)
可以使用show dbs来列出当前有多少个数据库,上面看到的是有两个,分别是admin和local。

2) 定义新的数据库名
我们通过使用“use new-databasename”的语法去使用一个新的数据库,注意,即使你的数据库还没建立起来,依然可以这样使用,因为mongodb会在真正插入了数据后,才会真正建立起来。
>use mkyongdb
switched to db mkyongdb
> show dbs
admin 0.03125GB
local (empty)
注意,在use mkyongdb后,mkyongdb实际上还没真正建立起来,只是表明目前是在使用mkyongdb了。

3)保存数据
定义一个collection,名为“users”,然后插入数据,如下:
> db.users.save( {username:"mkyong"} )
> db.users.find()
{ "_id" : ObjectId("4dbac7bfea37068bd0987573"), "username" : "mkyong" }
>
> show dbs -www.linuxidc.com-
admin 0.03125GB
local (empty)
mkyongdb 0.03125GB
可以看到,用db.users.find()可以找出已插入的数据。这个时候,名为“users”的collection已经建立起来了,同时,数据库mkyongdb也建立起来了。

B. nodejs mongodb嵌套数据

标准的js对象访问过程,以newPeople为例,访问phone:
var phone = newPeople.friend[0].phone;

赋值类似。

这种数组类型的内置文档,mongodb中有专门操作的API,可以操作数组的元素。

C. MongoDB如何进行嵌套查询

你得用两个query,不能在一个里完成。
但是因为mongodb一般都把正在用的数据放在内存里,所以两个query也不会太慢。如果你的程序和mongodb之间的连接成为瓶颈,必须要用一个query的话,你可以用stored javascript。慕课网上有很多类似的视频教程,你可以看看。

D. mongodb使用嵌套存放数据是不是会影响效率

会的。会让效率更高。
因为如果你不embed在这个collection的doc里,就需要另一个collection来存这个数据。这样就会需要两个query才能得到数据。

E. mongodb存储文件如何存储

您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!以文档形式存储数据的。一个document对象包含任意多个key-value格式的数据。可以嵌套使用数组等。。非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!

F. Mongodb多层嵌套数组如何更好的查询

直接在程序里把不匹配的数组元素滤掉最简单了。会作为个体被查询的数据最好不要放在数组里面,mongodb的查询对数组元素是比较弱的,以前(2.2或者2.4以前)没有$elemMatch操作符,连查询一个特定元素符合两个条件都做不到,只能查询数组里面存在符合这两个条件的元素。举例来说就是既可能命中{array:[{a:1,b:1}]}也可能命中{array:[{a:1},{b:1}]}。
因此我认为把商品单列出来会比较合适。

G. mongodb数据库适合做什么

mongodb众所周知不支持事务,所以需要强事务的业务根本不能考虑mongodb。
mongodb的优势就是文档存储:
1. 业务经常变动,需要不时的添加字段,那么mongodb比较适合,关系型数据库添加字段的复杂度也还好
2. 嵌套文档,业务数据比较复杂,适合嵌套文档式存储,那么mongodb非常合适,这个关系型数据库比较难搞,虽然MySQL和pg也有文档存储,但MySQL的不成熟,pg毕竟现在生产中使用还是偏少,个人也不了解,这里不谈。但这不仅仅这一点优势,具体下面会细说。
3. upsert支持,查询速度也不慢
4. 高可用的副本集支持
5. 查询语法非常丰富,嵌套文档查询功能非常强大,不是重度用户可能不能理解
下面说说一个具体的使用事例:
项目的一条数据在10kb左右,如果使用关系型数据库那么需要将这条数据拆分成大概几百条左右,建造多个表,设计较复杂,这种数据大概在一百万条左右,想想拆分后在十几亿的数据量就可怕。打平后的数据什么DB也都可以拿下,只是一百万变十几亿比较恐怖而已。
如果采用MySQL存储,每次查询需要使用外键查询多个表,从这些表中拉取数据,性能肯定要下降很多,比不上只在一个表查询,而且只拉取少两个数量级的数据。查询也还好,业务允许可以对结果做缓存,放到redis里去。
但是重点来了,需求要增量更新部分数据,这时候需要更新多个表,根本没法做到原子性(注意事务不是原子操作),当然也可以使用cas等技术补偿,达到最终一致性。但使用mongodb存储只需要update一条数据,对相应的嵌套文档中内容更新,可以做到原子性,是不是很方便?
推荐学习《python教程》
具体说说该项目的难点,查询无法使用缓存,可能会很吃惊,但是业务决定了确实做不了,而且增量更新的量达到上万的QPS,如果不能保证原子性想想多么可怕!
所以mongodb在这里帮了大忙,关系型数据库解决不了这个难题。
有人可能要问,mongodb没有事务,上游数据写入也会有问题,你不可能所有数据都存一个表吧?
当然不是的,我们mongodb里的数据是从MySQL中清洗出来存到mongodb中的,mongodb只做单点的业务需求,综合的数据还是在MySQL中。
此项目我们用了上百个副本集,保证系统的高可用,这些副本集配置只要一条shell就搞定,如果用MySQL的主从不知道怎么配(我自己不懂),估计DBA得忙死,而该项目完全不需要也没用到DBA。
说了这么多mongo的优点,也说说他的缺点:
1. 查询优化器和MySQL没法比
2. 不支持reload,只能冷重启,初始化配置的时候比较麻烦
3. 没有事务,不敢存储第一手数据,多用来做备份数据的存储
mongodb可以做很多事情,取决于你脑洞,性能不差,存一些相对不重要的数据,mongodb嵌套文档功能强大,多看看官方文档挖掘挖掘有用信息,每次都能发现惊喜。

热点内容
安卓手机抖音升级功能在哪里 发布:2025-07-27 15:41:05 浏览:987
c编程题网站 发布:2025-07-27 15:31:19 浏览:813
ios用什么解压软件 发布:2025-07-27 15:29:01 浏览:889
如何下载清风服务器 发布:2025-07-27 15:28:59 浏览:16
internet访问没网 发布:2025-07-27 15:24:11 浏览:251
线性搜索算法 发布:2025-07-27 14:53:21 浏览:856
javaip获取mac 发布:2025-07-27 14:49:06 浏览:621
湖北金税盘服务器地址查询云主机 发布:2025-07-27 14:31:43 浏览:580
手机解压软件安卓 发布:2025-07-27 14:29:32 浏览:846
安卓手机怎么更新推特最新版 发布:2025-07-27 14:28:26 浏览:733