MongoDB 查询条件

查询(来源于mongodb权威指南) http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24ne
Advanced Queries

and
find({key:value,key:value})
指定返回的键
find({},{key:1,key:0})

查询条件
$lt<
$lte <=
$gt >
$gte >=


find({key:{$get:18,$lte:30}})

$in 可以用来查询一个键的多个值。
$nin 将返回与数组中所有条件都不匹配的文档。
find({key:{$in:[18,30]}})

$ne:不等于,或不在数组中
ffind({key:{&ne:value}})


$or更通用一些,用来完成多个键值的任意给定值。
find({$or:[{key:value},{key:value}]})

$not是元条件句,即可以用在任何其他条件之上。
$mod会将查询的值除以第一个给定的值,若余数等于第二个给定值则返回该结果。
fnd({key:{$not:{$mod:[5,1]}}})

条件句规则
条件句是内层文档的键,而修改器则是外层文档的键。
一个键可以有多个条件,但是一个键不能对应多个更新修改器。

null不仅匹配自身,而且匹配不存在的。所以这种匹配还会返回缺少这个键的所有文档。
$exists判段键值已存在。
find({key:{$in:[null],$exists:true}})

数组

$all 会匹配一组元素。
要找既有apple,又有banana的文档,就得用$all来查询
find({fruit:{$all:["apple","banana"]}})

想查询数组指定位置的元素,则需要使用key.index语法指定下标
find({key.2:value})

$size 可以用其查询指定长度的数组。$size并不能与其他查询子句组合。
find({key:{$size:3}})

$slice find的第二个参数是可选的,可以指定返回那些键。$slice返回数组的一个子集合。
findOne(条件,{key:{$slice:10}}) 返回数组的前10条记录
findOne(条件,{key:{$slice:-10}}) 返回数组的后10条记录
findOne(条件,{key:{$slice:[23,10]}}) 偏移值23开始的10条记录


查询内嵌文档
find({key.subkey:value,key.subkey:value})
$elemMatch 将限定条件进行分组,仅当需要对一个内嵌文档的多个键操作时才会用到。
find(key:{$elemMatch:{key:value,key:value}})

$where 可以执行任意JavaScript作为查询的一部分。
find($where:"this.x+this.y==10")

find($where:"function(){return 1;}")


Mongodb数据库操作语法

db.AddUser(username,password)添加用户
db.auth(usrename,password)设置数据库连接验证
db.cloneDataBase(fromhost)从目标服务器克隆一个数据库
db.commandHelp(name)返回某条操作命令的帮助
db.copyDatabase(fromdb,todb,fromhost)复制数据库fromdb—源数据库名称,todb—目标数据库名称,fromhost—源数据库服务器地址
db.createCollection(name,{size:3333,capped:333,max:88888})创建一个数据集,相当于一个表
db.currentOp()取消当前库的当前操作
db.dropDataBase()删除当前数据库
db.eval(func,args)run code server-side
db.getCollection(cname)取得一个数据集合,同用法:db['cname'] or db.cname
db.getCollenctionNames()取得所有数据集合的名称列表
db.getLastError()返回最后一个错误的提示消息
db.getLastErrorObj()返回最后一个错误的对象
db.getMongo()取得当前服务器的连接对象get the server connection object
db.getMondo().setSlaveOk()allow this connection to read from then nonmaster membr of a replica pair
db.getName()返回当操作数据库的名称
db.getPrevError()返回上一个错误对象
db.getProfilingLevel()?什么等级
db.getReplicationInfo()?什么信息
db.getSisterDB(name)get the db at the same server as this onew
db.killOp()停止(杀死)在当前库的当前操作
db.printCollectionStats()返回当前库的数据集状态
db.printReplicationInfo() 
db.printSlaveReplicationInfo() 
db.printShardingStatus()返回当前数据库是否为共享数据库
db.removeUser(username)删除用户
db.repairDatabase()修复当前数据库
db.resetError()error
db.runCommand(cmdObj)run a database command. if cmdObj is a string, turns it into {cmdObj:1}
db.setProfilingLevel(level)0=off,1=slow,2=all
db.shutdownServer()关闭当前服务程序
db.version()返回当前程序的版本信息
数据集(表)操作语法数据集(表)操作语法
db.linlin.find({id:10})返回linlin数据集ID=10的数据集
db.linlin.find({id:10}).count()返回linlin数据集ID=10的数据总数
db.linlin.find({id:10}).limit(2)返回linlin数据集ID=10的数据集从第二条开始的数据集
db.linlin.find({id:10}).skip(8)返回linlin数据集ID=10的数据集从0到第八条的数据集
db.linlin.find({id:10}).limit(2).skip(8)返回linlin数据集ID=1=的数据集从第二条到第八条的数据
db.linlin.find({id:10}).sort()返回linlin数据集ID=10的排序数据集
db.linlin.findOne([query])返回符合条件的一条数据
db.linlin.getDB()返回此数据集所属的数据库名称
db.linlin.getIndexes()返回些数据集的索引信息
db.linlin.group({key:…,initial:…,reduce:…[,cond:...]}) 
db.linlin.mapReduce(mayFunction,reduceFunction,<optional params>) 
db.linlin.remove(query)在数据集中删除一条数据
db.linlin.renameCollection(newName)重命名些数据集名称
db.linlin.save(obj)往数据集中插入一条数据
db.linlin.stats()返回此数据集的状态
db.linlin.storageSize()返回此数据集的存储大小
db.linlin.totalIndexSize()返回此数据集的索引文件大小
db.linlin.totalSize()返回些数据集的总大小
db.linlin.update(query,object[,upsert_bool])在此数据集中更新一条数据
db.linlin.validate()验证此数据集
db.linlin.getShardVersion()返回数据集共享版本号
db.linlin.find({‘name’:'foobar’})select * from linlin where name=’foobar’
db.linlin.find()select * from linlin
db.linlin.find({‘ID’:10}).count()select count(*) from linlin where
db.linlin.find().skip(10).limit(20)从查询结果的第十条开始读20条数据
select * from linlin limit 10,20———-mysql 
db.linlin.find({‘ID’:{$in:[25,35,45]}})select * from linlin where ID in (25,35,45)
db.linlin.find().sort({‘ID’:-1})select * from linlin order by ID desc
db.linlin.distinct(‘name’,{‘ID’:{$lt:20}})select distinct(name) from linlin where ID<20
  
db.linlin.group({key:{‘name’:true},cond:{‘name’:'foo’},reduce:function(obj,prev){prev.msum=obj.marks;},initial:{msum:0}})select name,sum(marks) from linlin group by name
db.linlin.find(‘this.ID<20′,{name:1})select name from linlin where ID<20
db.linlin.insert({‘name’:'foobar’,'age’:25})insert into linlin (‘name’,'age’) values(‘foobar’,25)
db.linlin.remove({})delete * from linlin
db.linlin.remove({‘age’:20})delete linlin where age=20
db.linlin.remove({‘age’:{$lt:20}})delete linlin where age<20
db.linlin.remove({‘age’:{$lte:20}})delete linlin where age<=20
db.linlin.remove({‘age’:{$gt:20}})delete linlin where age>20
db.linlin.remove({‘age’:{$gte:20}})delete linlin where age>=20
db.linlin.remove({‘age’:{$ne:20}})delete linlin where age!=20
db.linlin.update({‘name’:'foobar’},{$set:{‘age’:36}})update linlin set age=36 where name=’foobar’
db.linlin.update({‘name’:'foobar’},{$inc:{‘age’:3}})update linlin set age=age+3 where name=’foobar’

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值