数据库
1.创建或切换到新的数据库实例:use db_name
2.查看当前数据库:db
3.显示数据库列表:show dbs
空的数据库不显示,需要添加文档才能进行显示
插入数据:db.items.insert({"name":"kevin"})
4.test是默认数据库
5.删除当前数据库:db.dropDatabase()
集合
创建语法:
db.createCollection("collection_name", {capped : true, autoIndexId : true, size : 6142800, max : 10000 })
其中,collection_name:集合名称
capped | Boolean | (可选)如果为true,则启用封闭的集合。上限集合是固定大小的集合,它在达到其最大大小时自动覆盖其最旧的条目。 如果指定true,则还需要指定size参数。 |
autoIndexId | Boolean | (可选)如果为true,则在_id字段上自动创建索引。默认值为false。 |
size | 数字 | (可选)指定上限集合的最大大小(以字节为单位)。 如果capped为true,那么还需要指定此字段的值。 |
max | 数字 | (可选)指定上限集合中允许的最大文档数。 |
1.创建集合:db.createCollection("collection_name")
2.查看集合列表:show collections
3.其实在mongodb中不需要创建集合,当插入文档时,会自动创建集合,如:
db.auto_collection.insert({"name":"na"})
查看集合:show collections,会发现:
auto_collection
4.删除集合:db.COLLECTION_NAME.drop(),如:
db.klc.drop()
插入文档
1.向集合中插入一个文档:db.collection_name.insert({"key":"document"})
2.向集合中插入多个文档:db.collection_name.insert([{"d":"d"},{"b":"B"}])
3.…………插入一个文档并返回文档id:db.collection_name.insertOne({"key":"document"})
4..…………插入多个文档并返回文档id集合:db.collection_name.insertMany([{"d":"d"},{"b":"B"}])
备注:如果文档id不指定,会自动生成
5.要插入文档,也可以使用db.collection_name.save(document)。 如果不在文档中指定_id,那么save()方法将与insert()方法一样自动分配ID的值。如果指定_id,则将以save()方法的形式替换包含_id的文档的全部数据。
查询文档
6.查看所有文档列表:db.collect_name.find()
7.格式化显示文档列表db.collect_name.find().pretty()
8.条件查询,,语法如下:
MongoDB 与 RDBMS的等效 Where 子句
要在一些条件的基础上查询文档,可以使用以下操作。
操作 | 语法 | 示例 | RDBMS等效语句 |
相等 | {<key>:<value>} | db.mycol.find({"by":"yiibai"}) .pretty() | where by = 'yiibai' |
小于 | {<key>:{$lt:<value>}} | db.mycol.find({"likes":{$lt:50}}) .pretty() | where likes < 50 |
小于等于 | {<key>:{$lte:<value>}} | db.mycol.find({"likes":{$lte:50}}) .pretty() | where likes <= 50 |
大于 | {<key>:{$gt:<value>}} | db.mycol.find({"likes":{$gt:50}}) .pretty() | where likes > 50 |
大于等于 | {<key>:{$gte:<value>}} | db.mycol.find({"likes":{$gte:50}}) .pretty() | where likes >= 50 |
不等于 | {<key>:{$ne:<value>}} | db.mycol.find({"likes":{$ne:50}}) .pretty() | where likes != 50 |
单一条件查询:db.a1.find({_id:2})
多个条件查询:db.a1.find({$and:[{_id:2},{a:"da"}]})
或db.a1.find({_id:2},{a:"da"})
或db.a1.find({_id:2,a:"da"})
or查询:db.a1.find({$or:[{_id:2},{a:"ddd"}]}).pretty()
更新文档
9.修改文档
将a=“ddd”的文档的b修改为“b”: db.a1.update({a:"ddd"},{$set:{b:"b"}})
默认mongodb智慧更新一个文档,若要更新多个文档,使用属性:multi:true,如:
db.a1.update({a:"c"},{$set:{a:"aaa"}},{multi:true})
10.根据文档id替换整个文档内容:db.a1.save({_id:1,b:"b",c:"c"})
删除文档
11.删除a="a"的 第一个文档: db.a1.remove({a:"a"},true)
或db.a1.remove({a:"a"},1)
12.删除a=“a”的 所有文档:db.a1.remove({a:"a"})
13.删除集合下所有文档:db.a1.remove(false)
投影
只查询指定字段的文档信息:
db.a1.find({},{_id:0,a:1})
{}:表示无限制条件,第二个花括号中字段值指定为1表示显示,0表示不显示
限制记录数:db.a1.find().limit(2)
跳过指定数量的文档:db.a1.find().skip(2),默认数值为0
反序查询:db.a1.find().sort({b:-1})
正序查询:db.a1.find().sort({b:1})
创建索引:db.a1.ensureIndex({b:1,_id:-1})
其中-1表示降序索引,1表示升序索引
聚合函数
分组统计:db.a1.aggregate([{$group:{_id:"$a",countB:{$sum:1}}}])
详细用法请阅:https://www.yiibai.com/mongodb/mongodb_aggregation.html
java集成示例:https://gitee.com/kevin_kelly/mongodb-demo