MongoDB - 命令
大约 3 分钟
MongoDB - 命令
1. 基本操作
查看数据库
> show dbs admin 0.000GB config 0.000GB local 0.000GB切换数据库,如果没有对象的数据库则创建
> use test switched to db test创建集合
> db.createCollection("coll1") { "ok" : 1 }查看集合
> show collections coll1删除集合
> db.coll1.drop() true删除当前数据库
> db.dropDatabase() { "dropped" : "test", "ok" : 1 }
2. 集合数据操作-CRUD
2.1 数据添加
插入单条数据 -
db.coll.insert({})> db.coll.insert({"name":"a"}) WriteResult({ "nInserted" : 1 }插入多条数据 -
db.coll.insert([{},{}])> db.coll.insert([{"age":1},{"age":2}]) BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 2, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
2.2 数据查询
查询所有 -
db.coll.find()> db.coll.find() { "_id" : ObjectId("638e01311b684188d59dd0c0"), "name" : "a" } { "_id" : ObjectId("638e01941b684188d59dd0c1"), "age" : 1 } { "_id" : ObjectId("638e01941b684188d59dd0c2"), "age" : 2 }条件查询 -
db.coll.find(条件)等值查询
> db.coll.find({age:1}) { "_id" : ObjectId("638e01941b684188d59dd0c1"), "age" : 1 }大于
> db.coll.find({age:{$gt:1}}) { "_id" : ObjectId("638e01941b684188d59dd0c2"), "age" : 2 }小于
> db.coll.find({age:{$gt:1}}) { "_id" : ObjectId("638e01941b684188d59dd0c2"), "age" : 2 }大于等于
> db.coll.find({age:{$gte:1}}) { "_id" : ObjectId("638e01941b684188d59dd0c1"), "age" : 1 } { "_id" : ObjectId("638e01941b684188d59dd0c2"), "age" : 2 }小于等于
> db.coll.find({age:{$lte:2}}) { "_id" : ObjectId("638e01941b684188d59dd0c1"), "age" : 1 } { "_id" : ObjectId("638e01941b684188d59dd0c2"), "age" : 2 }不等于
> db.coll.find({age:{$ne:1}}) { "_id" : ObjectId("638e01311b684188d59dd0c0"), "name" : "a" } { "_id" : ObjectId("638e01941b684188d59dd0c2"), "age" : 2 }
逻辑条件查询 (与 或 非)
and
> db.coll.find({age:1,name:"a"})or
> db.coll.find({$or:[{age:1},{age:2}]}) { "_id" : ObjectId("638e01941b684188d59dd0c1"), "age" : 1 } { "_id" : ObjectId("638e01941b684188d59dd0c2"), "age" : 2 }not
> db.coll.find({age:{$not:{$lt:1}}}) { "_id" : ObjectId("638e01311b684188d59dd0c0"), "name" : "a" } { "_id" : ObjectId("638e01941b684188d59dd0c1"), "age" : 1 } { "_id" : ObjectId("638e01941b684188d59dd0c2"), "age" : 2 }
分页查询 -
db.coll.find().sort({排序字段:排序方式}).skip(跳过的行数).limit(一页显示多少数据)> db.coll.find().skip(1).limit(1) { "_id" : ObjectId("638e01941b684188d59dd0c1"), "age" : 1 }查询指定字段
> db.coll.find({},{name:1}) { "_id" : ObjectId("638e0cfe1b684188d59dd0c3"), "name" : "Jack" } { "_id" : ObjectId("638e0cfe1b684188d59dd0c4"), "name" : "Mary" } { "_id" : ObjectId("638e0cfe1b684188d59dd0c5"), "name" : "Rose" }查询排除字段
> db.coll.find({},{name:0}) { "_id" : ObjectId("638e0cfe1b684188d59dd0c3"), "age" : 10 } { "_id" : ObjectId("638e0cfe1b684188d59dd0c4"), "age" : 18 } { "_id" : ObjectId("638e0cfe1b684188d59dd0c5"), "age" : 8 }
2.3 数据更新
db.coll.update({条件},{$set:{字段名:值}},{multi:true})
> db.coll.update({age:1},{$set:{age:10}},{multi:true})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
$set设置字段值$unset删除指定字段$inc对修改的值进行自增upsert可选 如果不存在update的记录 是否插入objnew true是插入 默认falsemulti可选 默认false只更新找到的第一条记录,如果是true就把按条件查询出来多条记录全部更新writeConcern可选 用来指定mongod对写操作的回执为比如写的行为需要确认
2.4 数据删除
> db.coll.remove({name:"a"},{justOne: 1})
WriteResult({ "nRemoved" : 1 })
db.collection.remove( <query>, { justOne: <boolean>, writeConcern: <document> } )参数说明: query :(可选)删除的文档的条件。 justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除 所有匹配条件的文档。 writeConcern :(可选)用来指定mongod对写操作的回执行为。
3. 聚合操作
// TODO
准备示例数据
> db.coll.insert([{"name":"Jack","age":10},{"name":"Mary","age":18},{"name":"Rose","age":8}])
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 3,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
> db.coll.find()
{ "_id" : ObjectId("638e0cfe1b684188d59dd0c3"), "name" : "Jack", "age" : 10 }
{ "_id" : ObjectId("638e0cfe1b684188d59dd0c4"), "name" : "Mary", "age" : 18 }
{ "_id" : ObjectId("638e0cfe1b684188d59dd0c5"), "name" : "Rose", "age" : 8 }
3.1 单目的聚合
求总数
> db.coll.find().count() 3
3.2 聚合管道
db.coll.aggregate(AGGREGATE_OPERATION)
3.3 MapReduce变成模型
db.coll.mapReduce()
