MongoDB查询基础

insert

MongoDB中的数据是存在collection中的,类似表。collection中一条数据就是一个document。而collection存在db中。

比如要在一个名叫mydb的DB中,一个名叫users的collection中插入一条数据, 这是两条命令。

 

use mydb

db.users.insert({
		  name:"Jimi",
		  age:26
		  status:"A"
		})

 

 

 

 查看现在使用中的db

 

db

 

 查看目前这个db中的所有collection

 

show collections

 

  查看所有db

 

show dbs

 

 

save

save和insert基本一样,在处理_id时有不同

比如插入一条数据,指定了_id

 

 
 

db.users.insert({

 
 

_id:1,

 
 

name:"Jimi",

 
 


age:26,

 
 


status:"A"
})

 
 

 

 

然后修改这条记录时不小心改错了,像这样db.users.update({_id:1},{})  ,

这时save该出场了,只要把刚才那一句的insert改成save就OK

 
 

db.users.save({

 
 

_id:1,

 
 

name:"Jimi",

 
 


age:26,

 
 


status:"A"
})

 
 

insert和save区别

insert会对_id做检查,如果_id有重复,会报错

而save是保存某个_id的改动,如果没对应的_id则新插入一条,

 

 但save会覆盖整条数据,如果是如下这条语句,那么status字段就没了

db.users.save({

 
 

_id:1,

 
 

name:"Jimi",

 
 


age:26,

}) 

 

 

 find

 

 

db.users.find()                              查看users中所有记录

 

db.users.find({name:"jimi"})                 查询字段name=jimi

 

db.users.find({name:{$in:["jimi","Tom"]}})   查询name字段属于jimi和Tom

 

db.users.find({name:"jimi" , age:{$gt:18}})  两个条件同时符合(and)
db.users.find( { age: { $gt: 18 } } )        age>18

 

OR条件

db.users.find(
                   { $or: [
                            { age: { $gt: 18 } },
                            { status: "A" }
                          ]
                   }
                 )

 And ,Or

db.users.find( { name: 'jimi', $or: [ { age: { $gt: 18 } },
                                       { status: "A" ]
                   } )

 

 

再加一点

db.users.find( { age: { $gt: 18 } }, { name: 1,_id: 0 } ).limit(5)

find第一个参数{ age: { $gt: 18 } }是查询条件,age>18

第二个参数{ name: 1,_id: 0 } 表示查询的字段,类似SQL中select,数字是开关,name:1显示name字段,_id:0表示不显示_id(_id是mongoDB自动添加的字段)

limit(5)最多显示5条

 

 _id:0有无的区别

 

 

 

update

 把记录中sue的名字改成Sue

db.users.update(
   { name: { $eq: "sue" } },
   { $set: { name: "Sue" } }
)

 

Jimi的年龄增加5岁

db.users.update(
   { name:"Jimi" },
   { $inc: { age: 5 } }
)

 

 

年龄大于18的人status都改成B

db.users.update(
   { age: { $gt: 18 } },
   { $set: { status: "A" } },
   { multi: true }
)

 没{multi: true }这一句的话,只会修改一条记录

 

 

存在name=“Tom”,age=19的记录修改,不存在则insert这条记录,关键词{ upsert: true }

db.users.update(
           { name: "Tom",age: 19 }, { $set: { status: "A" } }, { upsert: true }

 

那如果要更新collection中所有数据呢,简单,不要加任何查询条件,比如给所有数据加一个class字段

 

db.users.update(
   { },
   { $set : { class : "One"}}
   { multi : true}
)

 

 

 

remove

删除所有age=29的记录

db.users.remove(
   { age: 29 }
)

 

删除一条age=29的记录

db.users.remove(
   { age: 29 },
   { justOne:true}
)

 

 

 

 删除整个collection

 

db.users.drop()

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值