MongoDB 插入、更新、删除
2012-06-16 21:00
344 查看
向 集合 添加新文档
从 集合 里删除文档
更新 现有文档
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" }
>
从 集合 里删除文档
更新 现有文档
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" }
>
相关文章推荐
- MongoDB的学习--文档的插入、删除和更新
- mongoDB(3):数据的更新、插入、删除
- MongoDB-文档插入、更新、删除、查询
- MongoDB常用命令汇总之插入、更新和删除操作详解。
- Mongodb(3)插入文档,更新文档,删除文档
- MongoDB数据插入、删除、更新
- 玩转mongodb(四):细说插入、更新、删除和查询
- MongoDB学习—(4)文档的插入,删除与更新
- mongodb[三] 文档操作:插入、更新、删除
- MongoDB的学习(1)--文档的插入、删除和更新
- MongoDB插入、更新、删除文档实现代码
- mysql 每秒钟查询次数、插入次数、删除次数、更新次数的统计
- 【翻译】SQL Server索引进阶:第十三级,插入,更新,删除
- Hibernate批处理操作优化 (批量插入、更新与删除)
- hibernate批量插入,更新和删除!
- Oracle 触发器 插入,更新,删除,数据同步,两表同步
- 存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectS
- 在ASP.NET 2.0中操作数据之十六:概述插入、更新和删除数据
- JDBC批量插入、批量删除、批量更新
- Oracle + Mybatis实现批量插入、更新和删除示例代码