首页 » PHP教程 » phpmongodb原生查询技巧_mongo 进阶查询

phpmongodb原生查询技巧_mongo 进阶查询

访客 2024-11-15 0

扫一扫用手机浏览

文章目录 [+]

cursor的成员:

next():游标向后移动,并返回下一个结果,如果没有结果则报错

phpmongodb原生查询技巧_mongo 进阶查询

hasNext():判断游标是否还能向后移动,返回boolean

phpmongodb原生查询技巧_mongo 进阶查询
(图片来自网络侵删)

这个游标不会移动哦,只会判断游标的下一个是否可以移动

skip(n):去前面的n条数据,返回cursor

limit(n):取当前结果的n条数据,返回cursor

sort(sortObj):按照指定的条件排序,返回cursor

排序中,1是正序, -1是倒序

count():得到符合filter的结果数量,返回Number

size():得到终极结果的数量,返回Number

由于某些函数会连续返回cursor,因此可以对其进行链式编程,返回cursor的函数成为了链中的一环,无论它们的调用顺序如何,结果都是一样的:

实行的结果如下:

sort -> skip -> limit复制代码查询条件

find函数的第一个参数是查询条件filter,它的写法极其丰富,下面列举了大部分情形下我们可能利用到的写法。

// 查询所有 name="twinkle" 的用户{ name: "twinkle" }// 查询所有 stuNo 以 1 结尾 并且 name 包含 tw 的用户{ stuNo: /1$/ , name: /tw/ }// 查询所有 stuNo 以 1 结尾 或者 name 包含 mar 的用户{ $or: [ { stuNo: /1$/, }, { name: /mar/ }, ],} // 查询所熟年龄即是18 或 20 的用户{ age: { $in: [18, 20] }} // 查询所熟年龄不即是18 或 20 或 25 的用户{ age: { $nin: [18, 20] }} // 查询所熟年龄在 20~30 之间的用户{ age: { $gt: 20, $lt: 30 }}复制代码

查询中涌现了一些分外的属性,它以$开头,表达了分外的查询含义,这些属性称之为操作符 operator

查询中的常用操作符包括:

$or:或者$and:并且$in:在...之中$nin:不在...之中$gt:大于$gte:大于即是$lt:小于$lte:小于即是$ne:不即是投影

find中的第二个参数projection表示投影,类似于mysql中的select

它是一个工具,表达了哪些字段须要投影到查询结果中,哪些不须要

// 查询结果中仅包含 name、age,以及会自动包含的 _id{ name: 1, age: 1}// 查询结果不能包含 loginPwd、age,其他的都要包含{ stuNo: 0, age: 0}// 查询结果中仅包含 name、age,不能包含_id{ name: 1, age: 1, _id: 0}// 缺点:除了 _id 外,其他的字段不能稠浊编写{ name: 1, age: 0}// 这句话的意思是说,除了name字段要显示,其他的字段都不要显示,并且除了age字段不显示,其他字段都要显示,这句话是有抵牾的复制代码

mongoose中的查询

<Model>.findById(id); // 按照id查询单条数据<Model>.findOne(filter, projection); // 根据条件和投影查询单条数据<Model>.find(filter, projection); // 根据条件和投影查询多条数据复制代码

findOne和find如果没有给予回调或等待,则不会真正的进行查询,而是返回一个DocumentQuery工具,可以通过DocumentQuery工具进行链式调用进一步获取结果,直到传入了回调、等待、调用exec时,才会真正实行。

链式调用中包括:

countlimitskipsort

和mongo的利用办法一样

小彩蛋菜单mongodb的备份与规复

# 规复mongorestore -d <dbname> <backupDir># 备份mongodump -d <dbname> -o <backupDir>复制代码

标签:

相关文章

江苏省常州市历史与现代交融的江南名城

江苏省常州市,地处长江三角洲南翼,是一座具有悠久历史和丰富文化的江南名城。常州以其独特的地理位置、优美的自然风光和深厚的人文底蕴,...

PHP教程 2025-02-18 阅读1 评论0