php mongo findd 最多返回多少条

9878人阅读
技术(19)
shell#查询
查询 name = &bruce& 的数据
db.users.find({ name : &bruce& });
条件操作符
$ne : !=、&&
$nin: not in
$not: 反匹配(1.3.3及以上版本)
查询 name && &bruce& and age &= 18 的数据
db.users.find({name: {$ne: &bruce&}, age: {$gte: 18}});
查询 creation_date & '' and creation_date &= '' 的数据
db.users.find({creation_date:{$gt:new Date(), $lte:new Date()});
查询 age in (20,22,24,26) 的数据
db.users.find({age: {$in: [20,22,24,26]}});
查询 age取模10等于0 的数据
db.users.find('this.age % 10 == 0');
db.users.find({age : {$mod : [10, 0]}});
db.users.find({favorite_number : {$all : [6, 8]}});
可以查询出{name: 'David', age: 26, favorite_number: [ 6, 8, 9 ] }
可以不查询出{name: 'David', age: 26, favorite_number: [ 6, 7, 9 ] }
查询不匹配name=B*带头的记录
db.users.find({name: {$not: /^B.*/}});
查询 age取模10不等于0 的数据
db.users.find({age : {$not: {$mod : [10, 0]}}});
#返回部分字段
选择返回age和_id字段(_id字段总是会被返回)
db.users.find({}, {age:1});
db.users.find({}, {age:3});
db.users.find({}, {age:true});
db.users.find({ name : &bruce& }, {age:1});
0为false, 非0为true
选择返回age、address和_id字段
db.users.find({ name : &bruce& }, {age:1, address:1});
排除返回age、address和_id字段
db.users.find({}, {age:0, address:false});
db.users.find({ name : &bruce& }, {age:0, address:false});
数组元素个数判断
对于{name: 'David', age: 26, favorite_number: [ 6, 7, 9 ] }记录
匹配db.users.find({favorite_number: {$size: 3}});
不匹配db.users.find({favorite_number: {$size: 2}});
$exists判断字段是否存在
查询所有存在name字段的记录
db.users.find({name: {$exists: true}});
查询所有不存在phone字段的记录
db.users.find({phone: {$exists: false}});
$type判断字段类型
查询所有name字段是字符类型的
db.users.find({name: {$type: 2}});
查询所有age字段是整型的
db.users.find({age: {$type: 16}});
对于字符字段,可以使用正则表达式
查询以字母b或者B带头的所有记录
db.users.find({name: /^b.*/i});
$elemMatch(1.3.1及以上版本)
为数组的字段中匹配其中某个元素
Javascript查询和$where查询
查询 age & 18 的记录,以下查询都一样
db.users.find({age: {$gt: 18}});
db.users.find({$where: &this.age & 18&});
db.users.find(&this.age & 18&);
f = function() {return this.age & 18} db.users.find(f);
排序sort()
以年龄升序asc
db.users.find().sort({age: 1});
以年龄降序desc
db.users.find().sort({age: -1});
限制返回记录数量limit()
返回5条记录
db.users.find().limit(5);
返回3条记录并打印信息
db.users.find().limit(3).forEach(function(user) {print('my age is ' + user.age)});
my age is 18
my age is 19
my age is 20
限制返回记录的开始点skip()
从第3条记录开始,返回5条记录(limit 3, 5)
db.users.find().skip(3).limit(5);
查询记录条数count()
db.users.find().count();
db.users.find({age:18}).count();
以下返回的不是5,而是user表中所有的记录数量
db.users.find().skip(10).limit(5).count();
如果要返回限制之后的记录数量,要使用count(true)或者count(非0)
db.users.find().skip(10).limit(5).count(true);
分组group()
假设test表只有以下一条数据
{ domain: &www.mongodb.org&
, invoked_at: {d:&&, t:&17:14:05&}
, response_time: 0.05
, http_action: &GET /display/DOCS/Aggregation&
使用group统计test表11月份的数据count:count(*)、total_time:sum(response_time)、 avg_time:total_time/
db.test.group(
&& { cond: {&invoked_at.d&: {$gt: &2009-11&, $lt: &2009-12&}}
&& , key: {http_action: true}
&& , initial: {count: 0, total_time:0}
&& , reduce: function(doc, out){ out.count++; out.total_time+=doc.response_time }
&& , finalize: function(out){ out.avg_time = out.total_time / out.count }
&&& &http_action& : &GET /display/DOCS/Aggregation&,
&&& &count& : 1,
&&& &total_time& : 0.05,
&&& &avg_time& : 0.05
-java api--------------------------------------------------
使用mongoDB需要导入以下类,当然不是全部需要,用到的类就导入。
import com.mongodb.M
import com.mongodb.DB;
import com.mongodb.DBC
import com.mongodb.BasicDBO
import com.mongodb.DBO
import com.mongodb.DBC
import com.mongodb.ObjectId;
当把一个类对象存到mongoDB后,从mongoDB取出来时使用setObjectClass()将其转换回原来的类。
public class Tweet implements DBObject {
&&& /* ... */
Tweet myTweet = new Tweet();
myTweet.put(&user&, &bruce&);
myTweet.put(&message&, &fun&);
myTweet.put(&date&, new Date());
collection.insert(myTweet);
collection.setObjectClass(Tweet);
Tweet myTweet = (Tweet)collection.findOne();
当保存的对象没有设置ID时,mongoDB会默认给该条记录设置一个ID(&_id&)。
当然你也可以设置自己指定的ID,如:(在mongoDB中执行用db.users.save({_id:1,name:'bruce'});)
BasicDBObject bo = new BasicDBObject();
bo.put('_id', 1);
bo.put('name', 'bruce');
collection.insert(bo);
判断是否有mongoDB的访问权限,有就返回true,否则返回false。
boolean auth = db.authenticate(myUserName, myPassword);
查看mongoDB数据库列表
Mongo m = new Mongo();
for (String s : m.getDatabaseNames()) {
System.out.println(s);
查看当前库下所有的表名,等于在mongoDB中执行
Set&String& colls = db.getCollectionNames();
for (String s : colls) {
System.out.println(s);
查看一个表的索引
List&DBObject& list = coll.getIndexInfo();
for (DBObject o : list) {
System.out.println(o);
删除一个数据库
Mongo m = new Mongo();
m.dropDatabase(&myDatabaseName&);
建立mongoDB的链接
Mongo m = new Mongo(&localhost&, 27017);
DB db = m.getDB(&myDatabaseName&); //相当于库名
DBCollection coll = db.getCollection(&myUsersTable&);//相当于表名
查询第一条记录
DBObject firstDoc = coll.findOne();
findOne()返回一个记录,而find()返回的是DBCursor游标对象。
查询全部数据
DBCursor cur = coll.find();
while(cur.hasNext()) {
System.out.println(cur.next());
查询记录数量
coll.find().count();
coll.find(new BasicDBObject(&age&, 26)).count();
设置条件查询
BasicDBObject condition = new BasicDBObject();
condition.put(&name&, &bruce&);
condition.put(&age&, 26);
coll.find(condition);
查询部分数据块
DBCursor cursor = coll.find().skip(0).limit(10);
while(cursor.hasNext()) {
System.out.println(cursor.next());
比较查询(age & 50)
BasicDBObject condition = new BasicDBObject();
condition.put(&age&, new BasicDBObject(&$gt&, 50));
coll.find(condition);
&$gt&: 大于
&$gte&:大于等于
&$lt&: 小于
&$lte&:小于等于
&$in&: 包含
//以下条件查询20&age&=30
condition.put(&age&, new BasicDBObject(&$gt&, 20).append(&$lte&, 30));
List datas = new ArrayList();
for (int i=0; i & 100; i++) {
BasicDBObject bo = new BasicDBObject();
bo.put(&name&, &bruce&);
bo.append(&age&, i);
datas.add(bo);
coll.insert(datas);
正则表达式
查询所有名字匹配 /joh?n/i 的记录
Pattern pattern = pile(&joh?n&, CASE_INSENSITIVE);
BasicDBObject query = new BasicDBObject(&name&, pattern);
DBCursor cursor = coll.find(query);
-----------------------------------------------------------------
db.analytics.find({referer_url: /http:.*/i});
db.analytics.find({start_time:{$gte:new Date(),$lt:new Date()},referer_url:/http:.*/}).count()
正则表达式
查询所有名字匹配 /joh?n/i 的记录
Pattern pattern = pile(&joh?n&, CASE_INSENSITIVE);
BasicDBObject query = new BasicDBObject(&name&, pattern);
DBCursor cursor = coll.find(query);
condition.put(&name&, &bruce&);
condition.put(&age&, 26);
coll.find(condition);
查询部分数据块
DBCursor cursor = coll.find().skip(0).limit(10);
while(cursor.hasNext()) {
System.out.println(cursor.next());
比较查询(age & 50)
BasicDBObject condition = new BasicDBObject();
condition.put(&age&, new BasicDBObject(&$gt&, 50));
coll.find(condition);
&$gt&: 大于
&$gte&:大于等于
&$lt&: 小于
&$lte&:小于等于
&$in&: 包含
//以下条件查询20&age&=30
condition.put(&age&, new BasicDBObject(&$gt&, 20).append(&$lte&, 30));
List datas = new ArrayList();
for (int i=0; i & 100; i++) {
BasicDBObject bo = new BasicDBObject();
bo.put(&name&, &bruce&);
bo.append(&age&, i);
datas.add(bo);
coll.insert(datas);
正则表达式
查询所有名字匹配 /joh?n/i 的记录
Pattern pattern = pile(&joh?n&, CASE_INSENSITIVE);
BasicDBObject query = new BasicDBObject(&name&, pattern);
DBCursor cursor = coll.find(query);
db.cpc_common.cpc_click_log.find({date_created:{$gte:new Date()}});
---------------------------
建立collection db.createCollection(&mycoll&, {size:});
----------
索引:db.mycollection.ensureIndex( {active:1} );
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:68659次
积分:1227
积分:1227
排名:千里之外
原创:34篇
评论:10条
(1)(5)(7)(2)(4)(2)(1)(1)(1)(2)(1)(1)(5)(2)(2)MongoDB命令行下格式化find()返回结果:pretty()
MongoDB命令行下格式化find()返回结果:pretty() db.collection.find().pretty();
补充个一劳永逸的方法,在 shell 里执行下列代码 echo DBQuery.prototype._prettyShell = true ~/. mongorc . js 这样随时随地都是 pretty()了.
MongoDB命令行下格式化find()返回结果:pretty()
db.collection.find().pretty();
补充个一劳永逸的方法,在 shell 里执行下列代码
&DBQuery.prototype._prettyShell = true&
这样随时随地都是 pretty()了.
你最喜欢的MongoDB学习—(6)MongoDB的find查询比较符 - 推酷
MongoDB学习—(6)MongoDB的find查询比较符
首先,先通过以下函数向BookList集合中插入10000条数据
function&insertN(obj,n){&
& var&i=0;&
& while(i&n){&
& &obj.insert({id:i,name:&bookNumber&+i,publishTime:i+2000})&
var&BookList=db.getCollection(&BookList&)&
调用函数,这样,BookList中就有10000条数据了
通过命令db.[documentName].find({条件},{键指定})来查询具有特定特征的数据,键指定可用于指定什么键显示想、什么键不显示。例如:{id:0,name:1,publishTime:1}表示id键内容不显示,name与publishTime内容显示。
一,比较操作符查询
$lt & (less than)
$lte & (less than equal)
$gt & &(greater than)
$gte & (greater than equal)
$ne & (not equal)
我们可以运用比较操作符来查询出出版日期publishTime在2010年至2016年的书,并且不显示id,那么我们可以用一下语句进行查询
db.BookList.find({publishTime:{$gte:2010,$lte:2016}},{_id:0,name:1,publishTime:1})&
效果如下:
其他比较符可用类似方法组合使用。
二,$in与$nin包含与不包含
$in与$nin的用法是根据特定的键值。
命令格式db.[documentName].find({filed:{$in:[value1,value2,...]}}),运用该命令就可以查询出键filed中包含value1或value2,...等的数据,是一个或关系,只要包含有一个相同的value就符合查找条件。命令格式db.[documentName].find({filed:{$nin:[value1,value2,...]}}),运用该命令就可以查询出键filed中不包含value1或value2,...等的数据。
三,$or或查询
命令格式db.[documentName].find({$or:[{条件},{条件},...]}),注意中括号与花括号的区别,例如我们要查询id小于30,出版日期publishTime介于年的数据,我们就可以用命令:
db.BookList.find({$or:[{id:{$lt:30}},{publishTime:{$gte:200,$lte:2010}}]},{_id:0,name:1,publishTime:1})&
四,Null关键字
Null关键字可用于查询集合中哪些数据不包含某些键,命令格式db.[documentName].find({filed:null})
五,正则表达式查询
命令格式db.[documentName].find({filed:正则表达式}),由于我对于JS的正则表达式不是太了解,我就不尝试了( ̄o ̄) .
六,$not取反
该指令可将任何查询条件取反,类似于查询publishTime大于2016年的,通过$not取反可取到publishTime小于等于2016年的,一下为指令变换:
db.BookList.find({publishTime:{$gt:2016}}) & 取反 & db.BookList.find({publishTime:{$not:{$gt:2016}}})
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 php mongo find 的文章

 

随机推荐