摘要:格式為查詢條件顯示與否的選項如排序可以按指定的某些字段排序,字段標記為的為升序,標記為的為降序。查詢條件消除重復使用函數。格式為集合名指定字段查詢條件如聚合管道是特有的一種管道型聚合查詢方式。
參考官方文檔(圖文并茂非常好看):Getting Started - MongoDB Documentation
MongoDB的查詢功能非常強大,同時有些地方也會有點復雜。所以需要下點功夫學習和操練才能用好。
關于Mongo Shell當我們進入Mongo Shell客戶端后,實際上是進入了一個Javascript語言的交互環境。
也就是說,MongoDB中的很多命令,尤其是包括定義函數等高級命令,實際上都是Javascript語言,甚至說可以是jQuery。
了解了這點,一些高級命令如Aggregation學起來就會放松很多。
官方說明:
: 等于
$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] } } )正則表達式
有兩種方法:
/表達式內容/
{$regex: "表達式內容"}
db.mycollection1.find( { name: /^Jaw+$/ } ) # 或 db.mycollection1.find( { name: { $regex: "/^Jasow?$" } } )limit和skip
# 限定顯示條數 db.mycollection1.find().limit(數量) # 跳過指定第幾條數據 db.mycollection1.find().skip(2) # 混合使用 db.mycollection1.find().limit(10).skip(3)自定義函數查詢
自定義查詢是指使用自定義函數,格式為$where: function(){...}
db.mycollection1.find( { $where: function() { return this.age >= 18; } } )投影
即搜索的返回值中,只顯示指定的某些字段。字段指為0的不現實,指為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 })統計
使用count()函數。
db.mycollection1.find().count() db.mycollection1.count( {查詢條件} )消除重復
使用distinct()函數。
# 格式為: db.集合名.distinct( "指定字段", {查詢條件} ) # 如 db.mycollection1.distinct( "job", { age: {$lt: 40} } )聚合管道 Aggregation
Aggregation是MongoDB特有的一種Pipline管道型、聚合查詢方式。語法稍微復雜一些。
聚合管道可以達到多步驟的分組、篩選功能。這個管道中的每一個步驟,成為一個stage。
常用的管道有:
$match:簡單的根據條件過濾篩選
$group:將數據分組,一般配合一些統計函數,如$sum。
$project:修改document的結構。如增刪改,或創建計算結果
$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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19454.html
摘要:本篇博文為的中一篇,前面介紹簡單的查詢使用,這一篇重點則放在插入數據基本使用首先是準備好基本環境,可以參考博文高級篇之基本環境搭建與使用高級篇之查詢基本使用姿勢新增一條數據一個基本數據稱為,和不一樣,沒有強制約束哪些字段,可以隨 本篇博文為mongodb的curd中一篇,前面介紹簡單的查詢使用,這一篇重點則放在插入數據; I. 基本使用 首先是準備好基本環境,可以參考博文 1812...
摘要:既是數據庫,又是內存數據庫,而且它是現在最強大最流行的數據庫。所以相對于的真內存數據庫而言,只是將大部分的操作數據存在內存中。 MongoDB既是NoSQL數據庫,又是內存數據庫,而且它是現在最強大、最流行的NoSQL數據庫。區別與別的NoSQL數據庫,MongoDB主要是基于Documents文檔(即一條JSON數據)的。 MongoDB的特點: NoSQL數據庫 內存數據庫 存儲...
摘要:應答式寫入就會給我們返回結果,結果里面包含的項目很多,這樣我們就能更好的進行程序的控制和安全機制的處理。如下這個有用的另外一個用法命令行中使用該命令查看數據庫是否連接成功返回表示數據庫連接成功是查找并修改的意思。 在操作數據庫時,對數據的修改是需要有足夠的安全措施的,其實在實際工作中,我們用db.collections.update的時候不多,在修改時我們都會用findAndModif...
摘要:返回內容查詢出來后顯示的結果樣式,可以用和控制是否顯示。修飾符文件使用進行鏈接對應的集合聲明變量,并把查詢結果賦值給利用游標的進行循環輸出結果。到此的基礎操作就結束了,但是我們還沒有結束呢,下一節我們會用配合使用哦 find查詢操作是我們平時再開發中最常用的,也是重中之重。 find基本操作符 // 批量插入數據 var workmate1={ name:JSPang, ag...
摘要:插入兩條數據建立全文索引需要注意的是這里使用關鍵詞來代表全文索引,我們在這里就不建立數據模型了。全文索引查找表示要在全文索引中查東西。全文索引在工作還是經常使用的,比如博客文章的搜索,長文件的關鍵詞搜索,這些都需要使用全文索引來進行。 索引 在認識索引的之前我們先建立一張表,并往其中插入200萬條數據。 // test.js //生成隨機數 function GetRandomNum(...
閱讀 1383·2023-04-25 16:45
閱讀 1923·2021-11-17 09:33
閱讀 2312·2021-09-27 14:04
閱讀 919·2019-08-30 15:44
閱讀 2638·2019-08-30 14:24
閱讀 3420·2019-08-30 13:59
閱讀 1695·2019-08-29 17:00
閱讀 894·2019-08-29 15:33