插入
use test
show collections
/*填写注释*/
db.stus.insert({name:"猪八戒",age:28,gender:"男"})
db.stus.insert([
{name:"沙和尚",age:38,gender:"男"},
{name:"白骨精",age:16,gender:"女"},
{name:"蜘蛛精",age:14,gender:"女"}
])
db.stus.insert({_id:"85",name:"猪八戒",age:28,gender:"男"}) /* _id 具有唯一性 */
db.stus.find()
db.stus.find().pretty()
db.stus.insertOne() 用于插入一个文档对象
db.stus.insertMany() 用于插入多个文档对象
db.stus.insert() 既可以插入一个文档对象,又可以插入多个文档对象
//插入多条数据
for (var i=1;i<=100;i++)
{
db.try.insert({num:i});
}
db.try.find()
db.try.find().count()
//另一种插入方法,更节省时间
var a=[];
for (var i=1;i<=100;i++)
{
a.push({num:i});
}
db.try2.insert(a);
查询
/*用于查询符合条件的第一个文档,find()返回一个数组,findOne()返回一个文档*/
db.stus.find({age:28})
db.stus.findOne({age:28})
db.stus.find({age:28})[0]
db.stus.find({age:28})[1]
db.stus.find().count() /*计算大小/长度*/
db.stus.find().length()
//第二个{}中表示结果只显示age属性,默认包括_id属性,若不需要可设置为{_id:0,age:1}
db.stus.find({},{age:1})
db.stus.find()能查询集合中所有的文档
修改
/*db.<collection>.update(查询条件,新对象)*/
db.stus.find()
db.stus.update({name:"沙和尚"},{age:28})db.stus.find()
/*update默认使用新对象替换旧对象*/
//$set 修改/设置指定属性
//用_id来作为选择标准
//仅修改name属性,若不存在该属性则添加
db.stus.update(
{"_id" : ObjectId("5dd3aeb5a05414317760fb14")},
{$set:{name:"沙和尚"}})
db.stus.find({"_id" : ObjectId("5dd3aeb5a05414317760fb14")})
db.stus.update(
{"_id" : ObjectId("5dd3aeb5a05414317760fb14")},
{$set:{
gender:"男",
address:"流沙河"
}})
db.stus.find({"_id" : ObjectId("5dd3aeb5a05414317760fb14")})
//$unset删除文档指定属性,address:"流沙河" 改写为address:1 同样有效
db.stus.update(
{"_id" : ObjectId("5dd3aeb5a05414317760fb14")},
{$unset:{
address:"流沙河"
}})
db.stus.find({"_id" : ObjectId("5dd3aeb5a05414317760fb14")})
//对于多个符合查询要求的文档,update默认修改第一个
db.stus.find({name : "猪八戒"})
db.stus.update(
{name : "猪八戒"},
{$set:{ address:"高老庄"
}})
db.stus.find({name : "猪八戒"})
//updateMany可同时修改多个文档,updateOne仅修改一个文档
db.stus.updateMany(
{name : "猪八戒"},
{$set:{ address:"高老庄"
}})
db.stus.find({name : "猪八戒"})
//使用update修改多个文档,增加multi属性,设置为true
db.stus.update(
{name : "猪八戒"},
{$set:{ address:"高老庄2" }},
{multi:true})
db.stus.find({name : "猪八戒"})
db.stus.replace() //用于替换
//$inc 在原来的值上增加,值为负数则直接在原来的值上减少
db.stus.update(
{"_id" : ObjectId("5dd3aeb5a05414317760fb14")},
{$inc:{age:4}})
比较查询
//大于20
db.try.find({num:{$gt:20}})
/*
$gt:greater than
$gte:greater than or equal
$eq:equal
$lt:less than
$lte:less than or equal
*/
//大于40小于50
db.try.find({num:{$gt:40,$lt:50}})
//大于60或小于30
db.try.find({$or:[{num:{$gt:60}},{num:{$lt:30}} ]})
//查看前10条数据
db.try.find().limit(10)
//查看第11条到20条数据,skip用于跳过前n条数据
db.try.find().skip(10).limit(10)
//查看第21条到30条数据
db.try.find().skip(20).limit(10)
删除
db.stus.find()
db.stus.remove({_id:"85"}) //删除全部符合要求的文档
db.stus.find()
//db.stus.deleteOne() 删除一个,db.stus.deleteMany()删除多个
db.stus.remove({}) //删除全部文档
db.stus.remove({name : "猪八戒"},true) //删除第一个符合条件的文档
show collections
db.runoob.drop() //删除集合
内嵌文档
db.col.insert({name:"one",hobby:["run","swim"]})
db.col.find()
db.col.insert({name:"two",hobby:{run:["5km","10km"],swim:["50m","100m"]}})
//mongoDB支持直接通过内嵌文档的属性来查询,属性名称必须加""
db.col.find({"hobby.swim":"100m"})
db.col.find({name:"two"})
//$push向数组中增加元素,$addToSet也具有同样功能,但若已存在增加项,则不会再次增加,而$push会重复增加
db.col.update({name:"two"},{$push:{"hobby.run":"3km"}})
db.col.find({name:"two"})
db.col.update({name:"two"},{$push:{"hobby.run":"3km"}}) //重复增加
db.col.find({name:"two"})
db.col.update({name:"two"},{$addToSet:{"hobby.run":"20km"}}) //第一次增加
db.col.find({name:"two"})
db.col.update({name:"two"},{$addToSet:{"hobby.run":"20km"}}) //第二次,已存在20km,则不新增
db.col.find({name:"two"})
文档之间的关系
一对多,多对一,一对一,多对多
//一对一
db.wAndh.insert({ name:"w1", h:{name:"h1"}})
db.wAndh.find()
db.wAndh.insert({ name:"w2", h:{name:"h2"} }, { name:"w3", h:{name:"h3"} })
db.wAndh.find()
//一对多,属性变为数组模式["","",""]
//一对多
db.a.insert([{name:"a1"},{name:"a2"}])
db.a.find()
//用id来确定这是xxx的属性
db.order.insert({list:["b1","b2","b3"],name_id:ObjectId("5dd4abb227fdc1871920499b") })
db.order.insert({list:["b4","b5","b3"],name_id:ObjectId("5dd4abb227fdc1871920499b") })
db.order.insert({list:["b4","b3"],name_id:ObjectId("5dd4abb227fdc1871920499c") })
db.order.find()
//查找a的b
var a_id = db.a.findOne({name:"a2"})._id; //将a中a1的id值取出来db.order.find({name_id:a_id});
//多对多
db.a.drop()
db.a.insert([{name:"a1"},{name:"a2"},{name:"a3"}])
db.a.find()
db.b.insert([
{name:"b1",a_ids:[ObjectId("5dd4afe927fdc187192049a3"),
ObjectId("5dd4afe927fdc187192049a4")]},
{name:"b2",a_ids:[ObjectId("5dd4afe927fdc187192049a3"),
ObjectId("5dd4afe927fdc187192049a4"),
ObjectId("5dd4afe927fdc187192049a5")]}
])
db.b.find()
排序:
sort{a:1,b:-1} :先按照a的属性进行升序排列,然后在a排序后具有共同位置(a的值相等)时按照b的属性进行降序排列
limit skip sort 可按照任意顺序进行调用
网友评论