mongodb学习

安装mongodb 省略...


--添加服务

mongod --logpath D:/MongoDB26/log/mongodb.log --logappend --dbpath D:/MongoDB26/data/db --directoryperdb --serviceName MongoDB --install --journal

mongod --logpath D:/MongoDB26/log/mongodb.log --logappend --dbpath D:/MongoDB26/data/db --directoryperdb --serviceName MongoDB --install --auth --journal

--启动在服务中开启即可

--登录
C:\Users\zhanglw>mongo
MongoDB shell version: 2.6.5
connecting to: test

创建用户,先利用无验证开启,添加完用户后,在用验证开启
>use zhanglw
>db.createUser({
...   user:"zhanglw",
...   pwd:"123456",
...   roles:[
... {
... role:"dbOwner",
... db:"zhanglw"
... }
...   ]
... })

>use test
>db.createUser({
...   user:"test",
...   pwd:"123456",
...   roles:[
... {
... role:"dbOwner",
... db:"test"
... }
...   ]
... })

>use admin
>db.createUser({
...   user:"admin",
...   pwd:"admin",
...   roles:[
... {
... role:"userAdminAnyDatabase",
... db:"admin"
... }
...   ]
... })

>db.createUser({
...   user:"root",
...   pwd:"root",
...   roles:[
... {
... role:"root",
... db:"admin"
... }
...   ]
... })


后续登录,就需要验证了
> use zhanglw
switched to db zhanglw
> db.auth("zhanglw","123456");
1
>


插入数据
db.animal.insert({_id:20170005,name:"小猫",sex:"男",idNumber:"411521198611095432",birth:ISODate("1986-11-09")});
db.animal.insert({_id:20170006,name:"小狗",sex:"男",idNumber:"411521198611094568",birth:ISODate("1986-11-13")});
db.animal.insert({_id:20170007,name:"小猪",sex:"女",idNumber:"411521198611095566",birth:ISODate("1986-11-09")});
db.animal.insert({_id:20170008,name:"小羊",sex:"男",idNumber:"411521198611091236",birth:ISODate("1986-11-09")});


不以小开头的
>db.foo.find({name:{$not:/^小/}});

以小开头的
>db.foo.find({name:/^小/});

_id大于20170000的
>db.foo.find({"_id":{$gt:20170000}});

以小开头并且_id大于20170000的
>db.foo.find({"name":/^小/,"_id":{$gt:20170000}});

存在字段sex的文档
>db.foo.find({"sex":{$exists:true}});

db.foo.find({"fruit":{$exists:true}},{"_id":0});


db.foo.insert({"_id":ObjectId("56d565a6c9a724e1d66a1912"), "title":"MongoDB Overview"});
db.foo.insert({"_id":ObjectId("56d565a6c9a724e1d66a1913"), "title":"NoSQL Overview"});
db.foo.insert({"_id":ObjectId("56d565a6c9a724e1d66a1914"), "title":"Yiibai Yiibai Overview"});

db.foo.insert({ "_id" : ObjectId("4fcd7e2820668578cc1097d7"), "name" : "stephen", "age" : 41 });
db.foo.insert({ "_id" : ObjectId("4fcd81bb20668578cc1097d9"), "name" : "stephen", "age" : 38 });


db.foo.save({"_id":ObjectId("56d523232e5ebcb00b6cf49c"), "name":"李老师", "age":32, "sex":"女", "住址":"北京市朝阳区"});


db.foo.find({"fruit": {$size : 3}})

--删除全部 谨慎用
db.foo.remove();
--条件删除
db.foo.remove({"name":"小羊"});

--更新
db.foo.update({"name":"小猪"},{"name":"小猪仔"}) --这样更新其他字段就丢失了
db.foo.update({"name":"小猪"},{"name":"小猪仔","sex" : "男", "idNumber" : "41152119861104534", "birth" : ISODate("1996-10-13")});

查询
db.foo.find({$where:function(){if(3 > 2){return this.name=="小猫"} else {return this.name=="小狗"}}});
db.foo.find({"name":"小猫"});

数据
{ "_id" : ObjectId("4fcd81bb20668578cc1097d9"), "name" : "stephen", "age" : 86 }
{ "_id" : ObjectId("4fcd7e2820668578cc1097d7"), "name" : "stephen", "age" : 41 }
--更新name为jack,条件name="stephen" and age=41
db.foo.update({"name":"stephen","age":41},{$set:{"name":"jack"}});

更新后
{ "_id" : ObjectId("4fcd7e2820668578cc1097d7"), "name" : "jack", "age" : 41 }
{ "_id" : ObjectId("4fcd81bb20668578cc1097d9"), "name" : "stephen", "age" : 86 }

---------------------数组操作--------------:
--插入数组
db.foo.insert({"_id":ObjectId("56d565a6c9a724e1d66a19ce"),"fruit":["apple","orange","banana"]});
db.foo.insert({"_id":ObjectId("56d565a6c9a724e1d66a19cf"),"fruit":["cherry","boluo","yali"]});
db.foo.insert({"_id":ObjectId("56d565a6c9a724e1d66a19d0"),"fruit":["apple","mangguo","caomei"]});
db.foo.insert({"_id":ObjectId("56d565a6c9a724e1d66a19ff"),"fruit":["juzi","hamigua","boluomi","lanmei"]});


匹配fruit
> db.foo.find({"fruit":{$exists:true}});
{ "_id" : ObjectId("56d565a6c9a724e1d66a19ce"), "fruit" : [ "apple", "orange", "banana" ] }
{ "_id" : ObjectId("56d565a6c9a724e1d66a19cf"), "fruit" : [ "cherry", "boluo", "yali" ] }
{ "_id" : ObjectId("56d565a7c9a724e1d66a19d0"), "fruit" : [ "apple", "mangguo", "caomei" ] }

查看卖boluo的水果店
> db.foo.find({"fruit":{$all:["boluo"]}});
{ "_id" : ObjectId("56d565a6c9a724e1d66a19cf"), "fruit" : [ "cherry", "boluo", "yali" ] }

精确匹配,MongoDB的处理方式是完全相同的匹配,即顺序与数量都要一致
> db.foo.find({"fruit":["apple","orange","banana"]});
{ "_id" : ObjectId("56d565a6c9a724e1d66a19ce"), "fruit" : [ "apple", "orange", "banana" ] }
> db.foo.find({"fruit":["apple","orange"]});
>

匹配水果店售第三种水果是banana的水果店,索引从0开始
> db.foo.find({"fruit.2":"banana"});
{ "_id" : ObjectId("56d565a6c9a724e1d66a19ce"), "fruit" : [ "apple", "orange", "banana" ] }

查询卖4种水果的水果店:
> db.foo.find({"fruit":{$size:4}});
{ "_id" : ObjectId("56d565a6c9a724e1d66a19ff"), "fruit" : [ "juzi", "hamigua", "boluomi", "lanmei" ] }

给卖boluo的水果店 增加renshengguo
db.foo.update({fruit:{$all:["boluo"]}},{"$push":{fruit:"renshengguo"}});
{ "_id" : ObjectId("56d565a6c9a724e1d66a19cf"), "fruit" : [ "cherry", "boluo", "yali", "renshengguo" ] }

截取水果店的前2个水果
> db.foo.find({"fruit":{"$exists":true}},{"fruit":{"$slice":2}});
{ "_id" : ObjectId("56d565a6c9a724e1d66a19ce"), "fruit" : [ "apple", "orange" ] }
{ "_id" : ObjectId("56d565a6c9a724e1d66a19cf"), "fruit" : [ "cherry", "boluo" ] }
{ "_id" : ObjectId("56d565a7c9a724e1d66a19d0"), "fruit" : [ "apple", "mangguo" ] }
{ "_id" : ObjectId("56d565a6c9a724e1d66a19ff"), "fruit" : [ "juzi", "hamigua" ] }

> db.foo.find({"fruit":{"$exists":true}},{"fruit":{"$slice":2},"_id":0});
{ "fruit" : [ "apple", "orange" ] }
{ "fruit" : [ "cherry", "boluo" ] }
{ "fruit" : [ "apple", "mangguo" ] }
{ "fruit" : [ "juzi", "hamigua" ] }

不显示 _id 这个key
>db.foo.find({"fruit":{$size:4}},{"_id":0});
{ "fruit" : [ "cherry", "boluo", "yali", "renshengguo" ] }
{ "fruit" : [ "juzi", "hamigua", "boluomi", "lanmei" ] }

>db.foo.find({"fruit":{"$exists":true}},{"_id":0});
{ "fruit" : [ "apple", "orange", "banana" ] }
{ "fruit" : [ "cherry", "boluo", "yali", "renshengguo" ] }
{ "fruit" : [ "apple", "mangguo", "caomei" ] }
{ "fruit" : [ "juzi", "hamigua", "boluomi", "lanmei" ] }

查找有name存在的,或者有age存在的文档
db.foo.find({"$or":[{"name":{"$exists":true}},{"age":{"$exists":true}}]});

查找有name存在的,并且还有age存在的文档
db.foo.find({"$and":[{"name":{"$exists":true}},{"age":{"$exists":true}}]});
这样也行
db.foo.find({"name":{"$exists":true},"age":{"$exists":true}});

--批量插入
for(var i=1000;i>0;i--){
    db.zhanglw.shop.insert({_id:i, boss:"张"+i, fruit:["apple","orange","banana"], size:3});
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值