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,今天就到这里,以后遇到新的内容会更新文档,如若存在相似之处,请私聊!!!
不喜勿喷,指点欢迎!!!