Mongodb查询操作

Mongodb

前言

最近由于工作原因要使用Mongodb,所以就此整理一下,以备以后查看。

Mongodb基本数据类型

类型 数字 备注
Double 1
String 2
Object 3
Array 4
Binary data 5
Undefined 6 已废弃。
Object id 7
Boolean 8
Date 9
Null 10
Regular Expression 11
JavaScript 13
Symbol 14
JavaScript (with scope) 15
32-bit integer 16
Timestamp 17
64-bit integer 18
Min key 255 Query with -1.
Max key 127

下面是一些mongodb常用到的逻辑运算符

比较

名字 描述
$eq Matches values that are equal to a specified value.(判断相等)
$gt Matches values that are greater than a specified value.(判断大于)
$gte Matches values that are greater than or equal to a specified value.(判断大于等于)
$in Matches any of the values specified in an array.(判断在其中)
$lt Matches values that are less than a specified value.(判断小于)
$lte Matches values that are less than or equal to a specified value.(判断小于等于)
$ne Matches all values that are not equal to a specified value.(判断所有值都不等于指定值)
$nin Matches none of the values specified in an array.(判断不在其中)

逻辑

名字 描述
$and Joins query clauses with a logical AND returns all documents that match the conditions of both clauses.(与)
$not Inverts the effect of a query expression and returns documents that do not match the query expression.(非)
$nor Joins query clauses with a logical NOR returns all documents that fail to match both clauses.(异或)
$or Joins query clauses with a logical OR returns all documents that match the conditions of either clause.(或)

元素

名字 描述
$exists Matches documents that have the specified field.
$type Selects documents if a field is of the specified type.

基本查询功能在这里不在阐述,网上有很多,可以自行查找

Mongodb联表查询

命令 功能描述
$project 指定输出文档里的字段.
$match 选择要处理的文档,与fine()类似。
$limit 限制传递给下一步的文档数量。
$skip 跳过一定数量的文档。
$unwind 扩展数组,为每个数组入口生成一个输出文档。
$group 根据key来分组文档。
$sort 排序文档。
$geoNear 选择某个地理位置附近的的文档。
$out 把管道的结果写入某个集合。
$redact 控制特定数据的访问。
$lookup 多表关联

$lookup的功能及语法

db.collection.aggregate([
{
   $lookup:
     {
       from: <collection to join>, 
       localField: <field from the input documents>,
       foreignField: <field from the documents of the "from" collection>,
       as: <output array field>
     }
}
语法值 解释说明
from 同一个数据库下等待被Join的集合。就是查询的表想要联接哪个集合
localField 当前查询集合中的match值,如果输入的集合中,某文档没有 localField这个Key(Field),在处理的过程中,会默认为此文档含有 localField:null的键值对。
foreignField 待Join的集合的match值,如果待Join的集合中,文档没有foreignField 值,在处理的过程中,会默认为此文档含有 foreignField:null的键值对。
as 给新查询到的文档取名字。如果输入的集合中已存在该值,则会覆盖掉

$unwind操作符

扩展数组,为每个数组入口生成一个输出文档。

举个栗子

一个学生表,其中一个字段是数组类型,存的是科目subject,那么unwind会起到什么作用呢?

student:
{
    student_id:123 ,
    subject:[
        { type:a ,subject:"语文"},
        { type:b ,subject:"数学"},
        { type:c ,subject:"英语"}
    ]
}

//unwind操作:

db.student.aggregate([
    {$unwind:bonus}
])

//结果:
{student_id: 123 , subject:{type : a ,subject: "语文"}}
{student_id: 123 , subject:{type : b ,subject: "数学"}}
{student_id: 123 , subject:{type : c,subject: "英语"}}

这样应该一目了然了
OK,今天就到这里,以后遇到新的内容会更新文档,如若存在相似之处,请私聊!!!
不喜勿喷,指点欢迎!!!

上一篇:HCP_S1200数据集下载


下一篇:Yii2 反序列化漏洞复现