Mongo shell 函数详解 - 数组

数据事例:

> db.language.find()

{ "_id" : 1, "name" : "java", "tags" : [ "jsp", "servlet", "ejb" ] }

{ "_id" : 2, "name" : "db", "tags" : [ "mysql", "mongo" ] }

{ "_id" : 3, "name" : ".net", "tags" : [ "asp" ] }

{ "_id" : 4, "name" : "javascript", "tags" : [ ] }

{ "_id" : 5, "name" : "ruby" }

 

> var tags = db.language.findOne({_id:1}).tags

> Array.isArray(tags)

true

> Array.contains(tags,"jsp")

true

> Array.contains(tags,"jdbc")

false

> tags

[ "jsp", "servlet", "ejb" ]

> tags[3]="jsp"

jsp

> tags

[ "jsp", "servlet", "ejb", "jsp" ]

> tags = Array.unique(tags)

[ "jsp", "servlet", "ejb" ]

> Array.shuffle(tags)

[ "jsp", "ejb", "servlet" ]

> Array.shuffle(tags)

[ "servlet", "ejb", "jsp" ]

> Array.shuffle(tags)

[ "jsp", "servlet", "ejb" ]

> Object.keySet(tags)

[ "0", "1", "2" ]

> db.language.find({tags:{$size:0}})

{ "_id" : 4, "name" : "javascript", "tags" : [ ] }

> db.language.find(function(){return !Array.isArray(this.tags)})

{ "_id" : 5, "name" : "ruby" }

> db.language.find(function(){return Array.isArray(this.tags)})

{ "_id" : 1, "name" : "java", "tags" : [ "jsp", "servlet", "ejb" ] }

{ "_id" : 2, "name" : "db", "tags" : [ "mysql", "mongo" ] }

{ "_id" : 3, "name" : ".net", "tags" : [ "asp" ] }

{ "_id" : 4, "name" : "javascript", "tags" : [ ] }

> db.language.find(function(){return (Array.isArray(this.tags) && this.tags.length >= 3)})

{ "_id" : 1, "name" : "java", "tags" : [ "jsp", "servlet", "ejb" ] }

 

 

 

> var allTags = new Array();

> var langs = db.language.find(function(){return Array.isArray(this.tags) && this.tags.length > 0}).toArray();

> for(var i=0;i<langs.length;i++){

... var tags = langs[i].tags;

... for(var j in tags){

... allTags.push(tags[j]);

... }

... }

6

> allTags

[ "jsp", "servlet", "ejb", "mysql", "mongo", "asp" ]

 

> db.language.find({"tags.0":"jsp"})

{ "_id" : 1, "name" : "java", "tags" : [ "jsp", "servlet", "ejb" ] }

> db.language.find({tags:{$all:["jsp","ejb"]}})

{ "_id" : 1, "name" : "java", "tags" : [ "jsp", "servlet", "ejb" ] }

> db.language.find({tags:{$elemMatch:{$gte:"jsp"}}})

{ "_id" : 1, "name" : "java", "tags" : [ "jsp", "servlet", "ejb" ] }

{ "_id" : 2, "name" : "db", "tags" : [ "mysql", "mongo" ] }

> db.language.find({tags:{$elemMatch:{$in:["asp"]}}})

{ "_id" : 3, "name" : ".net", "tags" : [ "asp" ] }

> db.language.find({tags:"jsp"})

{ "_id" : 1, "name" : "java", "tags" : [ "jsp", "servlet", "ejb" ] }

> db.language.update({tags:"ejb"},{$set:{"tags.$":"groovy"}},false,true)

> db.language.find({tags:"jsp"})

{ "_id" : 1, "name" : "java", "tags" : [ "jsp", "servlet", "groovy" ] }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值