在进行Mongodb的操作之前,我们需要连接数据库,启动Mongodb的shell。在连接数据库时经常出错,如
[terry@localhost bin]$ ./mongo
MongoDB shell version: 2.2.2-rc0
connecting to: test
Thu Nov 22 06:41:19 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
exception: connect failed
这时候需要重新启动mogodb,注意参数的书写如下:
[root@localhost bin]# ./mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork
all output going to: /usr/local/mongodb/logs
forked process: 6897
child process started successfully, parent exiting
[root@localhost bin]# ./mongo
MongoDB shell version: 2.2.2-rc0
connecting to: test
1、创建
insert函数添加一个文档到集合中。例如,我们需要存储一篇博客文章。首先我们需要创建一个局部变量post,内容是代表文档的JavaScript对象。里面有:title、content和date几个键。
> 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-11-22T14:54:30.870Z")
}
根据Mongodb中的语法知识,刚才写的post是符合语法规范的,所以我们可以通过insert方法将我们的对象插入到集合中。
> db.blog.insert(post)
通过find方法来查看:
db.blog.find()
{ "_id" : ObjectId("50ae3cb8db406ddac27481df"), "title" : "my blog post", "content" : "Here's my blog post", "date" : ISODate("2012-11-22T14:54:30.870Z") }
2、读取
find方法会将集合中的所有文档都返回,如果我们只想查看一个文档,我们可以用findOne().find与findOne()可以接受查询文档形式的限定条件。这将通过查询限制匹配的文档。使用find时,shell自动显示最多20个匹配的文档。
3、更新
如果我们要更新博客文档,需要用update方法,update接受(至少)两个参数:第一个是要更新的文档的限定条件,第二个是新的文档。假设我们需要对我们刚插入的博客增加评论的字段,我们需要如下操作:首先,获取一个文档并通过find来进行赋值,然后对声明的对象进行更新,最后更新新文档。
> post1.comments=[]
[ ]
> db.blog.update({"title":"my blog post"},post1)
> db.blog.find()
{ "_id" : ObjectId("50ae3cb8db406ddac27481df"), "title" : "my blog post", "content" : "Here's my blog post", "date" : ISODate("2012-11-22T14:54:30.870Z"), "comments" : [ ] }
> db.blog.findOne()
{
"_id" : ObjectId("50ae3cb8db406ddac27481df"),
"title" : "my blog post",
"content" : "Here's my blog post",
"date" : ISODate("2012-11-22T14:54:30.870Z"),
"comments" : [ ]
}
>
4、 删除
remove用来从数据库中永久性的删除文档。在不使用参数进行调用的情况下,会删掉集合内的所有文档。也可以接受一个文档以限定条件。如
> db.blog.remove({"title":"my blog post"})
> db.blog.find()
> db.blog.findOne()
null