安装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});
}