博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

MongoDB命令使用示例

Posted on 2012-12-26 20:51  75077027  阅读(697)  评论(0编辑  收藏  举报

用图书的示例来说明一下mongodb命令的使用。

添加

插入一个图书文档:

db.books.insert({name:’深入学习MongoDB’});

然后,可以看一下是否插入成功了:

db.books.find();

打印的结果类似这样:

{ “_id” : ObjectId(“4f8e8a8e7a919fd8a1a37e2d”), “name” : “深入学习MongoDB” }

好了,现在不想要这条记录了,删除掉:

db.books.remove();

再次使用find(),就不会打印内容了。这里要注意,remove()将删除集合中所有文档。如何删除指定条件的文档,后面再说。

修改

再次创建一个图书文档:

db.books.insert({name:’钱的历史’,items:[]});

这里我增加了一个空数组,后面有用。

现在我要将图书名称(name)改为:深入学习MongoDB。

命令:

db.books.update({_id:ObjectId(“4f8e8a8e7a919fd8a1a37e2d”)},{name:’深入学习MongoDB’},false);

上述命令的缺点是,items属性没有了。如果只想修改图书的名称,而不影响文档的其他属性,可以这样:

db.books.update({_id:ObjectId(“4f8ea9a619bc948142e0dad5″)},{$set:{name:’Deep in MongoDB’}},false);

现在,我想往空数组里添加一些东西,比如,一个条目:

{_id:ObjectId, type:’chapter’,items:[]}

那么,命令如下:

 db.books.update({_id:ObjectId(’4f8ea9a619bc948142e0dad5′)},{$push:{items:{_id:new ObjectId(),type:’chapter’,items:[]}}},false);

看一下显示的结果:

{
“_id” : ObjectId(“4f8ea9a619bc948142e0dad5″),
“items” : [
{
"_id" : ObjectId("4f8eaf227a919fd8a1a37e2e"),
"type" : "chapter",
"items" : [ ]
}
],
“name” : “野外维生食物”
}

现在我们想在4f8eaf227a919fd8a1a37e2e的条目的数组中加入内容,怎么做呢?要用到push,它可以向指定的数组追加元素:

db.books.update({_id:ObjectId(’4f8ea9a619bc948142e0dad5′)},{$push:{items:{_id:new ObjectId(),type:’chapter’,items:[]}}},false);

现在我又发现追加的元素的type值错了,想改成section:

db.books.update({_id:ObjectId(“4f8ea9a619bc948142e0dad5″),’items._id’:ObjectId(“4f8ef10b7a919fd8a1a37e32″)},{$set:{‘items.$.type’:'section’}},false);

我是否能在items的元素的items数组中再追加元素呢?答案是肯定的:

db.books.update({_id:ObjectId(“4f8ea9a619bc948142e0dad5″),’items._id’:ObjectId(“4f8ef10b7a919fd8a1a37e32″)},{$push:{‘items.$.items’:{_id:new ObjectId(),type:’section’,items:[]}}},false);

追加后的结果类似这样:

{
“_id” : ObjectId(“4f8ea9a619bc948142e0dad5″),
“items” : [
{
"_id" : ObjectId("4f8ef10b7a919fd8a1a37e32"),
"items" : [
{
"_id" : ObjectId("4f8ef4d17a919fd8a1a37e33"),
"type" : "section",
"items" : [ ]
}
],
“type” : “chapter”
}
]
}

 

删除

如果文档添加了不该有的属性,想删除,比如:

db.books.update({_id:ObjectId(’4f8e8a8e7a919fd8a1a37e2d’)},{$push:{hello:’test1′}},false);

为文档增加了一个没用的属性,he l lo,这是个数组。

删除它:

db.books.update({_id:ObjectId(’4f8e8a8e7a919fd8a1a37e2d’)},{$unset:{hello:1}},false);