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()