`
kavy
  • 浏览: 888142 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

MongoDB安装及增删改查操作

 
阅读更多

http://blog.chinaunix.net/uid-21209537-id-3449721.html

 

使用mongodb进行增删改查等基本操作。本例使用 mongodb-win32-i386-2.0.8 , 在windows xp下进行测试。 MongoDB客户端和服务端都运行在本地(同一台机器)。

1.安装MongoDB

1.1.下载mongodb,并解压,本例安装在D:\J2ee\mongodb-win32-i386-2.0.8

1.2.使用mongod.exe启动mongodb

$MongoDB-folder/bin/mongod

 

点击(此处)折叠或打开

  1. D:\J2ee\mongodb-win32-i386-2.0.8\bin>mongod
  2. mongod --help for help and startup options
  3. Mon Dec 24 14:56:35
  4. Mon Dec 24 14:56:35 warning: 32-bit servers don't have journaling enabled by def
  5. ault. Please use --journal if you want durability.
  6. Mon Dec 24 14:56:35
  7. Mon Dec 24 14:56:35 [initandlisten] MongoDB starting : pid=1452 port=27017 dbpat
  8. h=/data/db 32-bit host=chenzhengwei
  9. Mon Dec 24 14:56:35 [initandlisten]
  10. Mon Dec 24 14:56:35 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are
  11. limited to about 2 gigabytes of data
  12. Mon Dec 24 14:56:35 [initandlisten] ** see http://blog.mongodb.org/post/13
  13. 7788967/32-bit-limitations
  14. Mon Dec 24 14:56:35 [initandlisten] ** with --journal, the limit is lower
  15. Mon Dec 24 14:56:35 [initandlisten]
  16. Mon Dec 24 14:56:35 [initandlisten] db version v2.0.8, pdfile version 4.5
  17. Mon Dec 24 14:56:35 [initandlisten] git version: a340a57af7cdda865da420704e1d1b2
  18. fac0cedc2
  19. Mon Dec 24 14:56:35 [initandlisten] build info: windows sys.getwindowsversion(ma
  20. jor=6, minor=0, build=6002, platform=2, service_pack='Service Pack 2') BOOST_LIB
  21. _VERSION=1_42
  22. Mon Dec 24 14:56:35 [initandlisten] options: {}
  23. Mon Dec 24 14:56:35 [initandlisten] exception in initAndListen: 10296 dbpath (/d
  24. ata/db) does not exist, terminating
  25. Mon Dec 24 14:56:35 dbexit:
  26. Mon Dec 24 14:56:35 [initandlisten] shutdown: going to close listening sockets..
  27. .
  28. Mon Dec 24 14:56:35 [initandlisten] shutdown: going to flush diaglog...
  29. Mon Dec 24 14:56:35 [initandlisten] shutdown: going to close sockets...
  30. Mon Dec 24 14:56:35 [initandlisten] shutdown: waiting for fs preallocator...
  31. Mon Dec 24 14:56:35 [initandlisten] shutdown: closing all files...
  32. Mon Dec 24 14:56:35 [initandlisten] closeAllFiles() finished
  33. Mon Dec 24 14:56:35 dbexit: really exiting now

 

 

以上并没有启动mongod,抛出了以下异常信息:

 

点击(此处)折叠或打开

  1. Mon Dec 24 14:56:35 [initandlisten] exception in initAndListen: 10296 dbpath (/d
  2. ata/db) does not exist, terminating

 

 

即dbpath(/data/db)不存在

正确方法,创建目录D:\J2ee\mongodb-win32-i386-2.0.8\data,用于mongodb存放数据。

执行以下命令:

 

点击(此处)折叠或打开

  1. D:\J2ee\mongodb-win32-i386-2.0.8\bin>mongod -dbpath D:\J2ee\mongodb-win32-i386-2
  2. .0.8\data
  3. Mon Dec 24 15:17:03
  4. Mon Dec 24 15:17:03 warning: 32-bit servers don't have journaling enabled by def
  5. ault. Please use --journal if you want durability.
  6. Mon Dec 24 15:17:03
  7. Mon Dec 24 15:17:03 [initandlisten] MongoDB starting : pid=5884 port=27017 dbpat
  8. h=D:\J2ee\mongodb-win32-i386-2.0.8\data 32-bit host=chenzhengwei
  9. Mon Dec 24 15:17:03 [initandlisten]
  10. Mon Dec 24 15:17:03 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are
  11. limited to about 2 gigabytes of data
  12. Mon Dec 24 15:17:03 [initandlisten] ** see http://blog.mongodb.org/post/13
  13. 7788967/32-bit-limitations
  14. Mon Dec 24 15:17:03 [initandlisten] ** with --journal, the limit is lower
  15. Mon Dec 24 15:17:03 [initandlisten]
  16. Mon Dec 24 15:17:03 [initandlisten] db version v2.0.8, pdfile version 4.5
  17. Mon Dec 24 15:17:03 [initandlisten] git version: a340a57af7cdda865da420704e1d1b2
  18. fac0cedc2
  19. Mon Dec 24 15:17:03 [initandlisten] build info: windows sys.getwindowsversion(ma
  20. jor=6, minor=0, build=6002, platform=2, service_pack='Service Pack 2') BOOST_LIB
  21. _VERSION=1_42
  22. Mon Dec 24 15:17:03 [initandlisten] options: { dbpath: "D:\J2ee\mongodb-win32-i3
  23. 86-2.0.8\data" }
  24. Mon Dec 24 15:17:03 [initandlisten] waiting for connections on port 27017
  25. Mon Dec 24 15:17:03 [websvr] admin web console waiting for connections on port 2
  26. 8017

 

2. 连接MongoDB

再打开一个命令行,执行以下mongo命令:

 

点击(此处)折叠或打开

  1. D:\J2ee\mongodb-win32-i386-2.0.8\bin>mongo
  2. MongoDB shell version: 2.0.8
  3. connecting to: test
  4. >

 

 

3. 创建数据库和表

mongodb中使用以下命令,切换到某个数据库(即使它还不存在)

use database-name

mongodb中当你往一个表里面插入一条记录时,相应的表和数据库就被自动创建好了。具体看下面的例子:

 

点击(此处)折叠或打开

  1. D:\J2ee\mongodb-win32-i386-2.0.8\bin>mongo
  2. MongoDB shell version: 2.0.8
  3. connecting to: test
  4. > use mydb
  5. switched to db mydb
  6. > db.users.insert({username:"henry",password:"123456"})
  7. > db.users.find()
  8. { "_id" : ObjectId("50d803393cc996b4e8ce22de"), "username" : "henry", "password"
  9. : "123456" }
  10. >

 

 

以下是三个常用的命令

 

点击(此处)折叠或打开

  1. show dbs – List all databases.
  2. use db_name – Switches to db_name.
  3. show collections – List all tables in the current selected database.

 

 

点击(此处)折叠或打开

  1. > show dbs
  2. local (empty)
  3. mydb 0.03125GB
  4. > use mydb
  5. switched to db mydb
  6. > show collections
  7. system.indexes
  8. users
  9. >


Note

In MongoDB, collection means table in SQL.

4. 插入一条记录

插入记录的语法的两种方式:

 

点击(此处)折叠或打开

  1. db.tablename.insert({data}) or db.tablename.save({data})

 

 

点击(此处)折叠或打开

  1. > db.users.save({username:"google",password:"google123"})
  2. > db.users.find()
  3. { "_id" : ObjectId("50d803393cc996b4e8ce22de"), "username" : "henry", "password": "123456" }
  4. { "_id" : ObjectId("50d8046a3cc996b4e8ce22df"), "username" : "google", "password" : "google123" }


5. 更新记录

更新一条记录语法:

db.tablename.update({criteria},{$set: {new value}}).

下面的例子中更新用户henry的密码:

 

点击(此处)折叠或打开

  1. > db.users.update({username:"henry"},{$set:{password:"henry123456"}})
  2. > db.users.find()
  3. { "_id" : ObjectId("50d8046a3cc996b4e8ce22df"), "username" : "google", "password" : "google123" }
  4. { "_id" : ObjectId("50d803393cc996b4e8ce22de"), "password" : "henry123456", "username" : "henry" }
  5. >

 

 

6. 查询记录

查找记录的语法:

db.tablename.find({criteria}).

6.1 列出users表中的所有记录

 

点击(此处)折叠或打开

  1. > db.users.find()
  2. { "_id" : ObjectId("50d8046a3cc996b4e8ce22df"), "username" : "google", "password" : "google123" }
  3. { "_id" : ObjectId("50d803393cc996b4e8ce22de"), "password" : "henry123456", "username" : "henry" }
  4. >

 

 

6.2 查询username 为henry的记录

 

点击(此处)折叠或打开

  1. > db.users.find({username:"henry"})
  2. { "_id" : ObjectId("50d803393cc996b4e8ce22de"), "password" : "henry123456", "username" : "henry" }

 

 

7. 删除记录

删除记录的语法:

db.tablename.remove({criteria}).

下面的例子

 

点击(此处)折叠或打开

  1. > db.users.remove({username:"google"})
  2. > db.users.find()
  3. { "_id" : ObjectId("50d803393cc996b4e8ce22de"), "password" : "henry123456", "username" : "henry" }
  4. >

 

 

Note

To delete all records from a table, uses db.tablename.remove().
To drop the table, uses db.tablename.drop().

8. 索引

Index(索引)可以提高查询的效率

8.1 List all indexes of table “users”, by default the column “_id” is always the primary key and created automatically.

 

点击(此处)折叠或打开

  1. > db.users.getIndexes()
  2. [
  3. {
  4. "v" : 1,
  5. "key" : {
  6. "_id" : 1
  7. },
  8. "ns" : "mydb.users",
  9. "name" : "_id_"
  10. }
  11. ]
  12. >

 

 

8.2 To create an index, uses db.tablename.ensureIndex(column). In below example, an index is created on column “username”.

 

点击(此处)折叠或打开

  1. > db.users.ensureIndex({username:1})
  2. > db.users.getIndexes()
  3. [
  4. {
  5. "v" : 1,
  6. "key" : {
  7. "_id" : 1
  8. },
  9. "ns" : "mydb.users",
  10. "name" : "_id_"
  11. },
  12. {
  13. "v" : 1,
  14. "key" : {
  15. "username" : 1
  16. },
  17. "ns" : "mydb.users",
  18. "name" : "username_1"
  19. }
  20. ]
  21. >

 

 

8.3 To drop an index, uses db.tablename.dropIndex(column). In below example, the index on column “username” is deleted or dropped.

 

点击(此处)折叠或打开

  1. > db.users.dropIndex({username:1})
  2. { "nIndexesWas" : 2, "ok" : 1 }
  3. > db.users.getIndexes()
  4. [
  5. {
  6. "v" : 1,
  7. "key" : {
  8. "_id" : 1
  9. },
  10. "ns" : "mydb.users",
  11. "name" : "_id_"
  12. }
  13. ]
  14. >

 

 

8.4 To create an unique index, uses db.tablename.ensureIndex({column},{unique:true}). In below example, an unique index is created on column “username”.

 

点击(此处)折叠或打开

  1. > db.users.ensureIndex({username:1},{unique:true});
  2. > db.users.getIndexes()
  3. [
  4. {
  5. "v" : 1,
  6. "key" : {
  7. "_id" : 1
  8. },
  9. "ns" : "mydb.users",
  10. "name" : "_id_"
  11. },
  12. {
  13. "v" : 1,
  14. "key" : {
  15. "username" : 1
  16. },
  17. "unique" : true,
  18. "ns" : "mydb.users",
  19. "name" : "username_1"
  20. }
  21. ]
  22. >

 

 

10. 帮助

At last, uses help() to guide you how to do things in MongoDB.

10.1 help – All available commands.

 

点击(此处)折叠或打开

  1. > help
  2. db.help() help on db methods
  3. db.mycoll.help() help on collection methods
  4. rs.help() help on replica set methods
  5. help admin administrative help
  6. help connect connecting to a db help
  7. help keys key shortcuts
  8. //...

 

 

10.2 db.help() – Shows help on db.

 

点击(此处)折叠或打开

  1. > db.help()
  2. DB methods:
  3. db.addUser(username, password[, readOnly=false])
  4. db.auth(username, password)
  5. db.cloneDatabase(fromhost)
  6. db.commandHelp(name) returns the help for the command
  7. db.copyDatabase(fromdb, todb, fromhost)
  8. db.createCollection(name, { size : ..., capped : ..., max : ... } )
  9. db.currentOp() displays the current operation in the db
  10. db.dropDatabase()
  11. db.eval(func, args) run code server-side
  12. db.getCollection(cname) same as db['cname'] or db.cname
  13. db.getCollectionNames()
  14. db.getLastError() - just returns the err msg string
  15. db.getLastErrorObj() - return full status object
  16. db.getMongo() get the server connection object
  17. db.getMongo().setSlaveOk() allow this connection to read from the nonmas
  18. ter member of a replica pair
  19. db.getName()
  20. db.getPrevError()
  21. db.getProfilingLevel() - deprecated
  22. db.getProfilingStatus() - returns if profiling is on and slow threshold
  23. db.getReplicationInfo()
  24. db.getSiblingDB(name) get the db at the same server as this one
  25. db.isMaster() check replica primary status
  26. db.killOp(opid) kills the current operation in the db
  27. db.listCommands() lists all the db commands
  28. db.logout()
  29. db.printCollectionStats()
  30. db.printReplicationInfo()
  31. db.printSlaveReplicationInfo()
  32. db.printShardingStatus()
  33. db.removeUser(username)
  34. db.repairDatabase()
  35. db.resetError()
  36. db.runCommand(cmdObj) run a database command. if cmdObj is a string, tu
  37. rns it into { cmdObj : 1 }
  38. db.serverStatus()
  39. db.setProfilingLevel(level,) 0=off 1=slow 2=all
  40. db.shutdownServer()
  41. db.stats()
  42. db.version() current version of the server
  43. db.getMongo().setSlaveOk() allow queries on a replication slave server
  44. db.fsyncLock() flush data to disk and lock server for backups
  45. db.fsyncUnock() unlocks server following a db.fsyncLock()
  46. >

 

 

10.3 db.collection.help() – Shows help on collection (table).

 

点击(此处)折叠或打开

  1. > db.users.help()
  2. DBCollection help
  3. db.users.find().help() - show DBCursor help
  4. db.users.count()
  5. db.users.dataSize()
  6. db.users.distinct( key ) - eg. db.users.distinct( 'x' )
  7. db.users.drop() drop the collection
  8. db.users.dropIndex(name)
  9. //...

 

 

10.4 db.collection.function.help() – Shows help on function.

 

点击(此处)折叠或打开

  1. > db.users.find().help()
  2. find() modifiers
  3. .sort( {...} )
  4. .limit( n )
  5. .skip( n )
  6. .count() - total # of objects matching query, ignores skip,limit
  7. .size() - total # of objects cursor would return, honors skip,limit
  8. .explain([verbose])
  9. //...

 

Done. Hope this summary of MongoDB commands could help others.

References

Official MongoDB tutorials
MongoDB Indexes

http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/

分享到:
评论

相关推荐

    JAVA操作MongoDB简单增删改查

    本教程将详细介绍如何使用Java与MongoDB进行交互,包括基本的增删改查(CRUD)操作。首先,我们需要引入MongoDB的Java驱动程序,这通常通过Maven或Gradle的依赖管理来实现。 1. **添加依赖** 在Maven的`pom.xml`...

    MongoDB java实现增删改查

    在Java开发中,我们可以使用MongoDB的Java驱动程序来实现对MongoDB数据库的增、删、改、查(CRUD)操作。以下是对这些核心功能的详细说明。 1. **增加(Create)** 要在MongoDB中插入数据,我们需要使用`...

    使用C#访问MongoDB实现简单增删改查

    本教程将详细介绍如何使用C#访问MongoDB,实现基本的增删改查操作。 首先,我们需要在C#项目中引入MongoDB的驱动程序。MongoDB官方提供了`MongoDB.Driver`库,可以通过NuGet包管理器安装。在Visual Studio中,右键...

    nodejs+express+mongodb 博客系统增删改查完整版

    这需要用到MongoDB的更新操作。 8. **博客删除**: 删除博客可能需要在用户确认后执行删除操作,这需要查询到要删除的博客,然后使用MongoDB的删除方法来移除。 9. **权限控制**: 权限控制是保证系统安全的重要环节...

    MongoDB增删改查操作案例-用户信息增删改查.zip

    在本案例"MongoDB增删改查操作案例-用户信息增删改查.zip"中,我们将探讨如何使用MongoDB进行基本的数据操作,包括添加(Add)、删除(Delete)、修改(Update)和查询(Query)用户信息。 1. 添加操作(Add): 在...

    mongodb数据库增删改查

    在Java应用程序中,我们可以使用MongoDB Java驱动程序来与MongoDB进行交互,执行基本的数据库操作,如增(添加)、删(删除)、改(更新)和查(查询)。下面将详细介绍这些操作。 1. 添加(Add) 要向MongoDB集合...

    mongoDB增删改查+前端页面实现+idea+themlesf+mybatis

    在本项目中,我们将探讨如何使用MongoDB进行数据的增删改查操作,以及如何结合前端页面、IntelliJ IDEA开发环境、Thymeleaf模板引擎和MyBatis持久层框架来构建一个完整的应用程序。 首先,让我们深入了解MongoDB的...

    java 操作mongodb 增删改查

    本教程将详细介绍如何使用Java进行MongoDB的基本操作,包括增(添加数据)、删(删除数据)、改(修改数据)和查(查询数据)。 首先,你需要在项目中引入MongoDB的Java驱动程序。目前最新的稳定版本是`mongodb-...

    Java MongoDB 增删改查Demo程序

    通过学习和实践这些示例,你将能够熟练地在Java应用程序中与MongoDB进行交互,进行数据的增删改查操作。在实际项目中,你可能还需要关注错误处理、连接池管理、事务支持等方面,以确保应用程序的健壮性和性能。

    mongodb的小例子,增删改查,分页

    它的增删改查操作简单易用,配合分页技术,能有效地管理和检索大量数据。学习这些基本操作,对于理解和使用MongoDB进行数据管理至关重要。通过实践这些示例,你将能够快速上手MongoDB,并为构建高效的数据驱动应用...

    java连接Mongodb进行增删改查_java连接Mongodb进行增删改查_curiousjop_depthklb_Mong

    本篇文章将详细讲解如何使用Java连接到MongoDB数据库,并进行基本的增删改查操作。 首先,连接MongoDB需要引入MongoDB的Java驱动程序。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org....

    node.连接mongodb实现增删改查.zip

    在本文中,我们将深入探讨如何使用Node.js连接MongoDB数据库并实现基本的增删改查操作。MongoDB是一个流行的文档型数据库系统,而Node.js则是一个JavaScript运行环境,非常适合构建实时、高性能的网络应用。结合...

    通过C#访问mongodb进行增删改查(测试通过)

    本篇将详细讲解如何使用C#实现对MongoDB的增删改查操作,并提供经过测试验证的源代码。 首先,我们需要引入MongoDB的C#驱动程序,它提供了与MongoDB数据库进行通信的类和方法。在NuGet包管理器中,可以搜索并安装`...

    java操作mongodb增删改查

    ### Java操作MongoDB进行增删改查详解 #### 一、引言 在现代软件开发中,非关系型数据库如MongoDB因其灵活性和扩展性而备受青睐。Java作为一种广泛使用的编程语言,在操作MongoDB时提供了丰富的API支持。本文将详细...

    MongoDb增删改查的网站范例

    在这个“MongoDb增删改查的网站范例”中,我们将探讨如何利用Spring Data项目和MongoDB适配器进行数据库操作。 Spring Data是一个强大的框架,它简化了与各种数据存储系统的交互,包括MongoDB。Spring Data MongoDB...

    nodejs操作mongodb实现增删改查

    以上就是使用Node.js操作MongoDB实现增删改查的基本步骤。随着对这两个技术的深入理解和实践,你将能够构建更复杂、功能丰富的应用程序。请参考提供的文章链接以获取更多细节和示例,同时持续学习和探索Node.js和...

    基于Html的crud-express-mongodb增删改查设计源码

    本源码提供了一个基于Html的crud-express-mongodb增删改查设计。项目包含1586个文件,其中包括928个JavaScript文件、193个Markdown文档、138个JSON文件、71个Less样式文件、21个TypeScript文件、19个YAML文件、15个...

    演示了如何使用Express4x与MongoDb实现增删改查的功能

    在本文中,我们将深入探讨如何使用Express 4.x框架与MongoDB数据库来实现Web应用程序中的基本CRUD(创建、读取、更新、删除)操作。Express是Node.js平台上的一个流行web应用框架,它提供了构建高效、灵活的HTTP...

    mongodb基本增删改查代码

    下面我们将详细讨论MongoDB的基本增删改查操作。 ### 增(Add) 在MongoDB中,添加数据到集合(相当于关系型数据库中的表)主要通过`insertOne()`或`insertMany()`方法实现。例如,如果我们有一个名为`users`的...

    用户管理注册登录增删改查页面

    增删改查(CRUD)是数据库操作的基本动作。在用户管理中,"增"即增加新用户,"删"是删除用户账户,"改"为修改用户信息,"查"是查询用户信息。在Java中,我们可以创建Service层来封装这些业务逻辑,然后通过DAO(数据...

Global site tag (gtag.js) - Google Analytics