MongoDB常用命令
一. 基本操作
1.2 增
>db.test.insert({x:"1"}) //test 集合如果不存在,则创建
>for (var i = 1; i <= 25; i++) db.testData.insert( { x : i } )
1.2 查
>db.test.find()
>var c = db.testData.find()
>while ( c.hasNext() ) printjson( c.next() )
>db.test.find( { x : "7" } )
>db.test.find({x:"1"},{"_id":0,"x":1}) //不包含_id
>db.test.find().limit(3)
>db.users.find( { age: { $gt: 18 } }, { name: 1, address: 1 } ).limit(5).sort({age:1})
>db.test.find( { x: { $in: [ 1, 3,'hello' ] } } )
>db.inventory.find( { x: '1', $or: [ { qty: { $gt: 100 } }, { price: { $lt: 9.95 } } ]} )
start=new Date("2014-06-25 00:00:00")
>db.test.find({"insert_time":{"$lt":start}})
1.3 改
update(Document query,Document update,Document options)
query:查询条件
update:更新规则
$inc,$mul,$rename,$setOnInsert,$set/$unset,$min/$max,$currentDate
options:选项
key值 | 类型 | 说明 |
---|---|---|
upsert | boolean(false) | 如果不存在,是否创建。 |
multi | boolean(false) | 是否对符合条件的doc全部更新 |
默认只更新一条。
• 将adu的年龄增加10
>db.test.update({"name":"adu"},{"$inc":{"age":10}})
• 将所有name为"adu"的年龄加10
>db.test.update({"name":"adu"},{"$inc":{"age":10}},{"multi":true})
• 将adu的年龄加10,并将sex设置为"male"
>db.test.update({"name":"adu"},{"$inc":{"age":10},"$set":{"sex":"male"}})
• 完全替换(没有使用$操作)
update({"name":"adu"},{"age":29,"name":"test"})
update({"name":"adu"},{"age":29,"name":"test"},{"upsert":true})
1.4 查找并修改
findAndModify(Document query,Document sort,boolean remove,Document update,boolean new,Document fields,boolean upsert)
修改并返回单个doc.默认返回修改前的doc,如果想要修改后的,设置new为true.
query:查询条件
sort:满足查询条件的结果进行排序,并只会对排在首位的doc进行修改
remove:是否删除,默认false。remove和update必须指定一个。
update:更新规则
new:是否返回修改后的doc,默认为false。对于remove操作,此选项会被略过。
fileds:返回doc的字段筛选。如:{"name":1,"age":1}
upsert:不存在的doc,是否直接插入,默认false.
•
>db.people.findAndModify({
query: { name: "Tom", state: "active", rating: { $gt: 10 } },
sort: { rating: 1 },
update: { $inc: { score: 1 } }
})
>db.people.findAndModify({
query: { name: "Gus", state: "active", rating: 100 },
sort: { rating: 1 },
update: { $inc: { score: 1 } },
upsert: true
})
db.people.findAndModify({
query: { name: "Pascal", state: "active", rating: 25 },
sort: { rating: 1 },
update: { $inc: { score: 1 } },
upsert: true,
new: true
})
• 删除排名最低的那位活跃用户
>db.people.findAndModify(
{
query: { state: "active" },
sort: { rating: 1 },
remove: true
}
)
1.5 删
>db.test.remove({})
• 删除多条
>db.products.remove( { qty: { $gt: 20 } })
• 删除一条
>db.products.remove( { qty: { $gt: 20 } }, true )
二. 索引
2.1 查询
getIndexes()
2.2 创建
ensureIndex(Document keys, Document options)
keys:key为索引字段,value为1(升序)或-1(降序)
value:
key值 | 类型 | 说明 |
---|---|---|
background | boolean(false) | 是否后台运行。如果后台,则mongodb在创建过程中会继续服务 |
unique | boolean(false) | 是否唯一索引。 |
• 单列升序(非唯一)
>db.test.ensureIndex({"name":1})
• 联合索引(name升序,age降序)
>db.test.ensureIndex({"name":1,"age":-1})
• 联合唯一索引
>db.test.ensureIndex({"name":1,"age":-1},{"unique":true})
2.3 修改
mongodb不支持修改索引,如果想要修改就只能先删除再创建。
2.4 删除
• 删除索引
dropIndex(index)
index为string(索引名)或document。
>dropIndex("nameIdex")
>dropIndex({"name":1})
• 删除所有索引(除了_id)
>dropIndexes()
- 作者:水岩
- 出处:http://www.cnblogs.com/waterystone
- 本博客中未标明转载的文章归作者水岩和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果您觉得本文对您的学习有所帮助,可通过支付宝(左) 或者 微信(右) 来打赏博主,增加博主的写作动力