博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB 插入、更新、删除
阅读量:5157 次
发布时间:2019-06-13

本文共 3035 字,大约阅读时间需要 10 分钟。

向 集合 添加新文档

从 集合 里删除文档

更新 现有文档

 

1. 插入并保存文档

> db.foo.insert({
"
bar
":
"
baz
"})

这个操作会给文档增加一个"_id"键 (如果 原来没有这个键的话),然后保存到MongoDB中

> db.foo.find()
"
_id
" : ObjectId(
"
4fdc779a89834bfb0bd267a3
"), 
"
bar
" : 
"
baz
" }

文档不能超过 4 MB , 可以 用 Object.bsonsize( 文档 ) 查看文档转换为 BSON 的大小 (以 字节 为 单位)

> post = { 
"
title
":
"
My Blog post
",
"
content
":
"
Here's my blog post.
",
"
date
":
... new Date()}
{
        
"
title
" : 
"
My Blog post
",
        
"
content
" : 
"
Here's my blog post.
",
        
"
date
" : ISODate(
"
2012-06-16T12:19:25.163Z
")
}
> Object.bsonsize(post)
77

2. 删除文档

db.foo.remove() 会删除foo集合中所有的文档,当不会删除集合本身,原来的索引也会保留。

> db.foo.findOne()
"
_id
" : ObjectId(
"
4fdc779a89834bfb0bd267a3
"), 
"
bar
" : 
"
baz
" }
> show collections
foo
system.indexes
db.foo.remove()
> show collections
foo
system.indexes
> db.foo.find()
>

remove() 函数可以接受 一个查询文档 作为可选 参数, 这样只有符合条件的参数 才被删除。

> post2 = {
"
title
":
"
My Blog post2
",
"
content
":
"
Here's my blog post2.
",
"
date
":
... new Date()}
{
        
"
title
" : 
"
My Blog post2
",
        
"
content
" : 
"
Here's my blog post2.
",
        
"
date
" : ISODate(
"
2012-06-16T12:41:34.429Z
")
}
> db.foo.insert(post2)
> db.foo.find()
"
_id
" : ObjectId(
"
4fdc7e1889834bfb0bd267a4
"), 
"
title
" : 
"
My Blog post
"
"
conte
nt
" : 
"
Here's my blog post.
"
"
date
" : ISODate(
"
2012-06-16T12:19:25.163Z
") }
"
_id
" : ObjectId(
"
4fdc7f2689834bfb0bd267a5
"), 
"
title
" : 
"
My Blog post2
"
"
cont
ent
" : 
"
Here's my blog post2.
"
"
date
" : ISODate(
"
2012-06-16T12:41:34.429Z
")
 }
db.foo.remove({
"
title
"
:
"
My Blog post2
"})
> db.foo.find()
"
_id
" : ObjectId(
"
4fdc7e1889834bfb0bd267a4
"), 
"
title
" : 
"
My Blog post
"
"
conte
nt
" : 
"
Here's my blog post.
"
"
date
" : ISODate(
"
2012-06-16T12:19:25.163Z
") }
>

remove 删除数据是永久性的,不能撤销,也不能恢复。

另一个 删除命令 db.runCommand({

"drop":"foo"}) 。

3. 更新

最简单的方法 用一个新文档 替换 原文档。 这种 适用于 结构变化较大的时候。

> user = { 
"
name
" :
"
joe
",
... 
"
friends
":32,
... 
"
enemies
":2
... }
"
name
" : 
"
joe
"
"
friends
" : 32, 
"
enemies
" : 2 }
> db.user.insert(user)
> db.user.find()
"
_id
" : ObjectId(
"
4fdc893d89834bfb0bd267a6
"), 
"
name
" : 
"
joe
"
"
friends
" : 32,
"
enemies
" : 2 }

 例如:

{

    "_id" :  ObjectId("4fdc893d89834bfb0bd267a6"),

    "name" :  "joe" ,

    "friends" : 32 ,

    "enemies" : 2

改变为

{

    "_id" :  ObjectId("4fdc893d89834bfb0bd267a6"),

    "username" :  "joe" ,

    "relationships" :

        {

               "friends" : 32 ,

               "enemies" : 2

        }

可以用update 来替换文档:

> var joe = db.user.findOne({
"
name
":
"
joe
"})
> joe.relationships = { 
"
friends
":joe.friends , 
"
enemies
" : joe.enemies};
"
friends
" : 32, 
"
enemies
" : 2 }
> joe.username = joe.name
joe
> delete joe.name
true
> delete joe.friends
true
> delete joe.enemies
true
> db.user.find()
"
_id
" : ObjectId(
"
4fdc893d89834bfb0bd267a6
"), 
"
name
" : 
"
joe
"
"
friends
" : 32,
"
enemies
" : 2 }
>  db.user.update({
"
name
" :
"
joe
" },joe);
> db.user.find()
"
_id
" : ObjectId(
"
4fdc893d89834bfb0bd267a6
"), 
"
relationships
" : { 
"
friends
" :
32, 
"
enemies
" : 2 }, 
"
username
" : 
"
joe
" }
>

 

 

 

转载于:https://www.cnblogs.com/anan/archive/2012/06/16/2552088.html

你可能感兴趣的文章
计算机可以这样玩—自我学习,自我思维,自我工作(编程)
查看>>
微星P55-主板是怎样造出来的
查看>>
CentOS 双网卡配置一个上外网一个接局域网
查看>>
java面向对象测试题(听说你学会了Java面向对象?!)
查看>>
使用pdfcrack破解PDF密码(Linux)
查看>>
(转)linux基本信息查看
查看>>
java多线程之计算数量
查看>>
Matplotlib 基本图表的绘制
查看>>
克隆(深克隆)
查看>>
Java 面向对象 之 多态实例3
查看>>
23讲 URL2
查看>>
java集合总结
查看>>
033远程执行命令
查看>>
js遍历json的key和value
查看>>
突然35岁:捡点我的职业生涯(转)
查看>>
关于spring中Assert的应用(方法入参检测工具类)
查看>>
oracle日期、转换函数
查看>>
nwjs如何打包文件为exe文件并修改exe图标
查看>>
hdfs极限编程遇到的问题
查看>>
MySQL高可用架构之MHA
查看>>