欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解MongoDB的條件查詢和排序

 更新時間:2021年06月23日 10:14:00   作者:島上碼農(nóng)  
MongoDB 提供了豐富的查詢功能,包括條件組合、反向查詢、查詢結(jié)果過濾、排序等,借助 MongoDB 多樣化的查詢方式,可以完成業(yè)務(wù)上的各類查詢需要。

find 方法

查詢的基本格式是db.collection.find({條件}),其中條件是可選的,類似于 MySQL 的 WHERE 條件一樣。示例如下:

//  查找全部文檔
db.collection.find({});
// 查找指定條件的文檔
db.collection.find({key: value});
// 查找昵稱為島上碼農(nóng)的用戶
db.users.find({nickname: '島上碼農(nóng)'});

條件組合

可以使用 $and、$or 和 $not 來設(shè)置組合條件。

// AND 查詢格式
db.collection.find({
  $and: [
    {key1: value1}, {key2: value2}
  ]
});

// OR 查詢格式
db.collection.find({
  $or: [
    {key1: value1}, {key2: value2}
  ]
});

// NOT 查詢格式
db.collection.find(
    {key: {$not: {條件表達式}}
);

例如下面的 users數(shù)據(jù)集:

[
  {nickname: '島上碼農(nóng)', score: 90, gender: 'male'}, 
  {nickname: '瑪麗', score: 98, gender: 'female'}, 
  {nickname: 'Tom', score: 76, gender: 'male'}
]

查找分數(shù)是90或76分的用戶:

db.users.find({
  $or: [
    {score: 90}, {score: 76}
  ]
});

查找性別不是 male 的用戶和查找分數(shù)高于80分用戶:

db.users.find({
  gender: {$not: {$eq: 'male'}}
});

db.users.find({
  score: {$not: {$lt: 80}}
});

其中$eq為相等條件,$lt為小于條件。 條件可以嵌套使用,例如and和and和or 嵌套,表示(a || b) && (c || d),格式如下:

// AND與OR 嵌套查詢格式
db.collection.find({
  $and: [
    {$or: [{key1: value1}, {key2: value2}]},
    {$or: [{key3: value1}, {key4: value2}]},
  ]
});
//查找 nickename是島上碼農(nóng)或瑪麗,且分數(shù)是90或76的用戶
db.users.find({
  $and: [
    {$or: [{nickname: '島上碼農(nóng)'}, {nickname: '瑪麗'}]},
    {$or: [{score: 90}, {score: 76}]}
  ]
});
//查找 nickname是島上碼農(nóng)且分數(shù)是90,或nickname是瑪麗且分數(shù)是76的用戶
db.users.find({
  $or: [
    {$and: [{nickname: '島上碼農(nóng)'}, {score: 90}]},
    {$and: [{nickname: '瑪麗'}, {score: 76}]}
  ]
});
//查找nickname是島上碼農(nóng),且分數(shù)不低于80分的用戶
db.users.find({
  $and: [
    {nickname: '島上碼農(nóng)'},
    {score: {$not:{$lt: 80}}}
  ]
});

比較操作符

在 MongoDB 提供了如下比較操作符,比較操作符的格式為{key: {$op: value}}:

  • $eq:相等操作符,即 a == b;
  • $gt:大于,即 a > b;
  • $gte:大于等于,即 a >= b;
  • $lt:小于,即 a < b;
  • $lte:小于等于,即 a <= b。

IN 查詢

in 查詢的格式和比較操作符類似,只是對應(yīng)的值是數(shù)組,即

db.collection.find({key: {$in: [...]}});

例如,需要查找分數(shù)為90,76的用戶:

db.users.find({score: {$in: [76, 90]}});

in 查詢也可以和其他條件組合,如and 查詢:

db.users.find({
 $and: [
   {score: {$in: [76, 90]}},
   {gender: 'male'}
   ]
});

限制返回結(jié)果條數(shù)和跳過數(shù)據(jù)

find 方法會將所有匹配條件的數(shù)據(jù)查找出來,因此對于數(shù)據(jù)集很大的時候會導(dǎo)致速度很慢且產(chǎn)生大量的 磁盤 I/O,如果確定數(shù)據(jù)只有1條的時候可以使用 findOne,如果要限制查詢條數(shù)可以使用 limit或 skip。limit 是查詢到指定數(shù)量后的結(jié)果就返回,而 skip 是跳過前面指定數(shù)量的結(jié)果。

// 查找指定條件的文檔的 n 條數(shù)據(jù)
db.collection.find({key: value}).limit(n);
//示例:查詢超過80分的3個用戶
db.users.find({score: {$gt: 80}}).limit(3);
// 查找指定條件的文檔的,跳過前 n 條數(shù)據(jù)
db.collection.find({key: value}).skip(n);
//示例: 查詢超過80分的用戶,跳過前3個
db.users.find({score: {$gt: 80}}).skip(3);

排序

排序使用格式如下:

db.collection.find({條件}).sort({key: 1});

其中1表示升序,-1表示降序,例如我們需要以分數(shù)降序排序:

db.users.find().sort({score: -1});

總結(jié)

本篇介紹了 MongoDB 的條件查詢操作,限制返回條數(shù)和排序。可以看到,MongoDB 的操作雖然語法和 SQL 不同,但是都有對應(yīng)的功能輔助查詢,對于查詢來說也是十分便捷的。

以上就是詳解MongoDB的條件查詢和排序的詳細內(nèi)容,更多關(guān)于MongoDB的條件查詢和排序的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MongoDB集合的增刪改查管理

    MongoDB集合的增刪改查管理

    這篇文章介紹了MongoDB集合的增刪改查管理,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • mongodb數(shù)據(jù)庫入門學(xué)習筆記之下載、安裝、啟動、連接操作解析

    mongodb數(shù)據(jù)庫入門學(xué)習筆記之下載、安裝、啟動、連接操作解析

    這篇文章主要介紹了mongodb數(shù)據(jù)庫入門學(xué)習筆記之下載、安裝、啟動、連接操作,結(jié)合簡單示例形式分析了MongoDB數(shù)據(jù)庫的基本下載、解壓、啟動服務(wù)、連接服務(wù)等相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2019-10-10
  • mongodb基本命令實例小結(jié)

    mongodb基本命令實例小結(jié)

    這篇文章主要介紹了mongodb基本命令,結(jié)合實例形式總結(jié)分析了MongoDB數(shù)據(jù)庫切換、查看、刪除、查詢等基本命令用法與操作注意事項,需要的朋友可以參考下
    2020-01-01
  • mongodb字段值自增長實現(xiàn)代碼

    mongodb字段值自增長實現(xiàn)代碼

    這篇文章主要介紹了mongodb字段值自增長實現(xiàn),本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • MongoDB 學(xué)習筆記(一)-MongoDB配置

    MongoDB 學(xué)習筆記(一)-MongoDB配置

    MongoDB 是一個基于分布式文件存儲的數(shù)據(jù)庫。接下來通過本文給大家介紹MongoDB 學(xué)習筆記(一)MongoDB配置的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • MongoDB分片的實現(xiàn)示例

    MongoDB分片的實現(xiàn)示例

    MongoDB的分片是一種橫向擴展數(shù)據(jù)庫的方式,可以將數(shù)據(jù)分散存儲在多臺服務(wù)器上,從而提高數(shù)據(jù)庫的處理能力和可用性,本文就來介紹一下如何實現(xiàn),感興趣的可以了解一下
    2023-12-12
  • Centos7安裝和卸載Mongodb數(shù)據(jù)庫的方法

    Centos7安裝和卸載Mongodb數(shù)據(jù)庫的方法

    MongoDB是一個跨平臺,面向文檔的數(shù)據(jù)庫,提供高性能,高可用性和易于擴展。MongoDB是工作在集合和文檔上一種概念。下面通過本文給大家分享Centos7安裝和卸載Mongodb數(shù)據(jù)庫的方法,需要的朋友參考下吧
    2017-11-11
  • mongodb 數(shù)據(jù)庫操作--備份 還原 導(dǎo)出 導(dǎo)入

    mongodb 數(shù)據(jù)庫操作--備份 還原 導(dǎo)出 導(dǎo)入

    mongodb數(shù)據(jù)備份和還原主要分為二種,一種是針對于庫的mongodump和mongorestore,一種是針對庫中表的mongoexport和mongoimport。
    2014-07-07
  • MongoDB 3.4 安裝以 Windows 服務(wù)方式運行的詳細步驟

    MongoDB 3.4 安裝以 Windows 服務(wù)方式運行的詳細步驟

    這篇文章主要介紹了MongoDB 3.4 安裝以 Windows 服務(wù)方式運行的詳細步驟,需要的朋友可以參考下
    2017-09-09
  • MongoDB各種查詢操作詳解

    MongoDB各種查詢操作詳解

    這篇文章主要介紹了MongoDB各種查詢操作詳解,包括比較查詢、關(guān)聯(lián)查詢、數(shù)組查詢等,需要的朋友可以參考下
    2014-03-03

最新評論