数据库

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