日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mongo执行逻辑表达式_MongoDB 高级查询

發(fā)布時間:2024/9/30 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mongo执行逻辑表达式_MongoDB 高级查询 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MongoDB的查詢功能非常強大,同時有些地方也會有點復(fù)雜。所以需要下點功夫?qū)W習(xí)和操練才能用好。

關(guān)于Mongo Shell

當我們進入Mongo Shell客戶端后,實際上是進入了一個Javascript語言的交互環(huán)境。

也就是說,MongoDB中的很多命令,尤其是包括定義函數(shù)等高級命令,實際上都是Javascript語言,甚至說可以是jQuery。

了解了這點,一些高級命令如Aggregation學(xué)起來就會放松很多。

官方說明:

基本查詢功能

比較運算

: 等于

$lt: Less Than

$gt: Greater Than

$gte: Greater Than or Equal

$ne: Not Equal

# age大于等于18

db.mycollection1.find( { age:{$gt: 18} } )

邏輯運算

$and

$or

db.mycollection1.find( {

$or: [

{ age: {$gte: 20} },

{ salary: {$gt: 5000} },

{ job: "HR" }

]

} )

范圍運算

$in

$nin: Not In

db.mycollection1.find( {

age: {

$in: [10, 20, 30]

}

} )

正則表達式

有兩種方法:

/表達式內(nèi)容/

{$regex: "表達式內(nèi)容"}

db.mycollection1.find( {

name: /^Ja\w+$/

} )

# 或

db.mycollection1.find( {

name: {

$regex: "/^Jaso\w?$"

}

} )

limit和skip

# 限定顯示條數(shù)

db.mycollection1.find().limit(數(shù)量)

# 跳過指定第幾條數(shù)據(jù)

db.mycollection1.find().skip(2)

# 混合使用

db.mycollection1.find().limit(10).skip(3)

自定義函數(shù)查詢

自定義查詢是指使用自定義函數(shù),格式為$where: function(){...}

db.mycollection1.find( {

$where: function() {

return this.age >= 18;

}

} )

投影

即搜索的返回值中,只顯示指定的某些字段。字段指為0的不現(xiàn)實,指為1的顯示,默認為1。

# 格式為:

db.mycollection1.find(

{查詢條件},

{顯示與否的選項}

)

# 如:

db.mycollection1.find(

{},

{ _id: 0, name: 1, age: 1 }

)

排序

可以按指定的某些字段排序,字段標記為1的為Asc升序,標記為-1的為Desc降序。

db.mycollection1.find().sort({ name:1, age:-1 })

統(tǒng)計

使用count()函數(shù)。

db.mycollection1.find().count()

db.mycollection1.count( {查詢條件} )

消除重復(fù)

使用distinct()函數(shù)。

# 格式為:

db.集合名.distinct( "指定字段", {查詢條件} )

# 如

db.mycollection1.distinct(

"job",

{ age: {$lt: 40} }

)

聚合管道 Aggregation

Aggregation是MongoDB特有的一種Pipline管道型、聚合查詢方式。語法稍微復(fù)雜一些。

聚合管道可以達到多步驟的分組、篩選功能。這個管道中的每一個步驟,成為一個stage。

常用的管道有:

$match:簡單的根據(jù)條件過濾篩選

$group:將數(shù)據(jù)分組,一般配合一些統(tǒng)計函數(shù),如$sum。

$project:修改document的結(jié)構(gòu)。如增刪改,或創(chuàng)建計算結(jié)果

$lookup:

$unwind:將List列表類型的Document進行拆分

$sort

$limit

$skip

語法格式為:

db.集合名.aggregate( [

{管道表達式1},

{管道表達式2},

{管道表達式2}

] )

示例:

db.Orders.aggregate( [

{$match: {

status: "A"

} },

{$group: {

_id: "$cut_id",

total: { $sum: "$amount" }

} }

] )

管道的Map Reduce

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的mongo执行逻辑表达式_MongoDB 高级查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。