mongodb如何新增和删除子多级文档

如下文档,请问在谷歌下面,tagUser如何新增和删除一个用户对象呢?{"sampleId":"f5cec9cd533141158d6f4fee91306f47","ta... 如下文档,请问在谷歌下面,tagUser如何新增和删除一个用户对象呢?
{
"sampleId": "f5cec9cd533141158d6f4fee91306f47",
"tags": [
{
"tag": "谷歌",
"count": 2,
"tagUser": [
{
"nickName": "雕",
"id": "5b97829e4f584ff084aaf76b50b0f721",
"createDate": "1465353473030"
},
{
"nickName": "柴",
"id": "68eb310fcb7e4529a60e831bae8d5ab5",
"createDate": "1465353473030"
}
]
},
{
"tag": "百度",
"count": 1,
"tagUser": [
{
"nickName": "SASA",
"id": "91c3fc161a6f469ca68e9cb7a295883c",
"createDate": "1465353473030"
}
]
}
]
}
展开
 我来答
ld...1@sina.com
2016-06-13 · 超过31用户采纳过TA的回答
知道答主
回答量:43
采纳率:100%
帮助的人:34.2万
展开全部
创建文档
向MongoDB插入数据,使用insert,
如:db.refactor.insert({"refactor's blog":"http://www.cnblogs.com/refactor"})
这个操作会给 文档 增加 一个"_id",键,并保存在数据库中。
批量插入
如果要插入多个文档,使用批量插入会快一些,批量化插入能传入一个有文档构成的数据给数据库
一次批量插入只是单个的TCP请求,避免了许多零碎的请求带来的开销.由于无需处理大量的消息头,
这样能减少插入时间.每当单个文档发送致数据库时,会有一个头部信息,告诉数据库对指定的集合做
插入操作.用批量插入的话,数据库就不用重复的处理每个文档的这种头部信息了.
当前版本MongoDB消息的最大长度是16M,使用批量插入是有这个限制的.
插入的原理和作用
当执行插入的时候,使用的驱动程序会将数据转换成BSON的形式,然后将其送入数据库.数据库解析
BSON,检验是否包含"_id"键并且不超过16M,除此之外,不做别的验证,就只是简单的将文档原样的
存入数据库.这样做的坏处是允许插入无效的数据,好处是能让数据库更加安全,远离注入式攻击.
所有的主流语言的驱动会在传送数据之前进行一些数据的有效性检查(文档是否超长,是否含非utf-8的字符,
是否使用了未知类型).同样也可以启动数据库服务器的时候使用--objcheck选项,这样服务器就会在插入
之前先检验文档结构的有效性,当然这样要牺牲性能.
查看doc文档转化为BSON的大小(以字节为单位),在shell中使用Object.bsonsize(doc)

删除文档
db.users.remove()
会删除users集合的所有文档,但不会删除集合本身,原有的索引也会保留.
remove函数可以接受一个查询文档作为可选参数,给定这个参数,只有符合条件的文档才会被删除.
db.users.remove({"name":"Refactor"})
删除数据的永久性的,不能撤销和恢复.
如果要清除整个集合,直接删除集合(然后重建索引)比删除集合中所有的文档要快.
删除集合:db.drop_collection("users")
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式