有用链接: MongoDB 官方文档, MongoDB 权威指南
$ mongo MongoDB shell version: 2.2.2 connecting to: test > show dbs local (empty) test 0.203125GB > use test switched to db test > show collections system.indexes test > use blog switched to db blog > show dbs local (empty) test 0.203125GB > db.users.save( { username:"HenryLee" } ) > show dbs blog 0.203125GB local (empty) test 0.203125GB > show collections system.indexes users > db.users.find() { "_id" : ObjectId("50e55533a3747d523d3b66fc"), "username" : "HenryLee" }
从结果来看,MongoDB 的实现与我们之前的 SQL 操作习惯有很多差别。 SQL 的数据库,需要预先创建数据库,创建表,然后才可以插入数据。 MongoDB 不需要这些过程,在运行时,根据需要帮我们自动生成数据库和表。 英语原文:When first time you save the value into the defined collection (table), under selected database, MangoDB will create the value, collection and database automatically.
创建 Create 1. Insert
db.collection.insert( < document > ) < document > : 文档
> db.users.insert( { username:"StormZhang" } ) > db.users.find() { "_id" : ObjectId("50e55533a3747d523d3b66fc"), "username" : "HenryLee" } { "_id" : ObjectId("50e55f8fa3747d523d3b66fd"), "username" : "StormZhang" }2. Create with Save
db.collection.save( < document > )
> db.users.save( { username:"pipi" } ) > db.users.find() { "_id" : ObjectId("50e55533a3747d523d3b66fc"), "username" : "HenryLee" } { "_id" : ObjectId("50e55f8fa3747d523d3b66fd"), "username" : "StormZhang" } { "_id" : ObjectId("50e55fcaa3747d523d3b66fe"), "username" : "pipi" }3. Create with Upsert(具体用法,参考 "更新 Update")
db.collection.update( < query >, < update >, { upsert: true } )
读取 Read 1. Find
db.collection.find( < query >, < projection > ) < query >:SQL SELECT < projection >: 返回数据集包含的字段(returns only those fields as specified)
> db.users.find( { username:"HenryLee" } ) { "_id" : ObjectId("50e55533a3747d523d3b66fc"), "username" : "HenryLee" } > db.users.find( { username:"HenryLee" }, { _id:0, username:1 } { "username" : "HenryLee" }2. Find One
db.collection.findOne( < query >, < projection > )
> db.users.findOne() { "_id" : ObjectId("50e55533a3747d523d3b66fc"), "username" : "HenryLee" }其他用法
db.users.find().sort( { username: 1 } ) db.users.find().limit( 2 )
更新 Update 1. Save
db.collection.save( < document > )
> db.users.save( { _id:10 , username:"xiaogang" } ) > db.users.find() { "_id" : ObjectId("50e55533a3747d523d3b66fc"), "username" : "HenryLee" } { "_id" : ObjectId("50e55f8fa3747d523d3b66fd"), "username" : "StormZhang" } { "_id" : ObjectId("50e55fcaa3747d523d3b66fe"), "username" : "pipi" } { "_id" : 10, "username" : "xiaogang" } > db.users.save( { _id:10 , username:"Amy" } ) > db.users.find( { _id:10 } ) { "_id" : 10, "username" : "Amy" }2. Update
db.collection.update( < query >, < update >, < options > ) < update >:SQL SET < options >:特殊参数
> db.users.update( { _id: 10, username: 'Amy' }, { $set: { 'username': 'Ryan' } } ) > db.users.find( { _id:10 } ) { "_id" : 10, "username" : "Ryan" }
特殊参数举例 1. multi: true 将更新所有符合条件的数据。
db.users.update( { username: 'henry' }, { $set: { username: 'Henry' } }, { multi: true } )2. upsert: true 若符合条件的数据不存在,则插入一条。
db.users.update( { username: 'henry' }, { $set: { username: 'Henry' } }, { upsert: true } )
删除 Delete 1. Remove
db.collection.remove( < query >, < justOne > )删除所以符合条件的记录
db.users.remove( { username: 'Henry' } )只删除第一条符合条件的记录
db.users.remove( { username: 'Henry' }, 1 )
以上例子,未考虑性能优化。
2013-01-03