有用链接: 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