English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Kapitel werden wir lernen, wie man Dokumente aus einer MongoDB-Sammlung abruft.
Um Daten aus einer MongoDB-Sammlung abzurufen, müssen Sie diefind()Methode.
find()Die grundlegende Syntax der Methode ist wie folgt-
> db.COLLECTION_NAME.find()
find() Die Methode zeigt alle Dokumente nicht strukturierter Weise an.
Vorausgesetzt, wir haben eine Sammlung namens mycol erstellt-
> use sampleDB switched to db sampleDB > db.createCollection("mycol") { "ok" : }} 1 } >
并使用 insert() 方法在其中插入3个文档,如下所示-
> db.mycol.insert([ { title: "MongoDB Overview", description: "MongoDB不是SQL数据库", by: "基础教程", url: "http://de.oldtoolbag.com", tags: ["mongodb", "database", "NoSQL"], likes: 100 } { title: "NoSQL Database", description: "NoSQL数据库没有表", by: "基础教程", url: "http://de.oldtoolbag.com", tags: ["mongodb", "database", "NoSQL"], likes: 20, comments: [ { user: "user1", message: "My first comment", dateCreated: new Date(2013,11,10,2,35, like: 0 } ] } ])
以下方法检索集合中的所有文档-
> db.mycol.find(), { "_id" : ObjectId("5dd4e2cc0821d3b44607534c)), "title" : "MongoDB Overview", "description" : "MongoDB不是SQL数据库", "by" : "基础教程", "url" : "http://de.oldtoolbag.com", "tags" : ["mongodb", "database", "NoSQL"], "likes" : 100 }) { "_id" : ObjectId("5dd4e2cc0821d3b44607534d)), "title" : "NoSQL Database", "description" : "NoSQL数据库没有表", "by" : "基础教程", "url" : "http://de.oldtoolbag.com", "tags" : ["mongodb", "database", "NoSQL"], "likes" : 20, "comments" : [{ "user" : "user1", "message" : "My first comment", "dateCreated" : ISODate("2013-12-09T21:05:00Z)), "like" : 0 }]} >
要以格式化的方式显示结果,可以使用 pretty() 方法。
> db.COLLECTION_NAME.find().pretty(),
以下示例从名为 mycol 的集合中检索所有文档,并以易于阅读的格式排列它们。
> db.mycol.find().pretty(), { "_id" : ObjectId("5dd4e2cc0821d3b44607534c") "title": "MongoDB Übersicht", "description": "MongoDB ist keine SQL-Datenbank", "by": "Einführung in die Grundlagen", "url" : "http://de.oldtoolbag.com", "tags": [ "mongodb", "Datenbank", "NoSQL" ], "likes": 100 } { "_id" : ObjectId("5dd4e2cc0821d3b44607534d)), "title" : "NoSQL Database", "description" : "NoSQL-Datenbanken haben keine Tabellen", "by": "Einführung in die Grundlagen", "url" : "http://de.oldtoolbag.com", "tags": [ "mongodb", "Datenbank", "NoSQL" ], "likes": 20, "comments" : [ { "user" : "user1", "message" : "My first comment", "dateCreated" : ISODate("2013-12-09T21:05:00Z"), "like" : 0 } ] }
Neben dem find()-Methoden gibt es auchfindOne()Die Methode gibt nur einen Dokument zurück.
>db.COLLECTIONNAME.findOne()
Die folgenden Beispiele suchen nach Dokumenten mit dem Titel MongoDB Overview.
> db.mycol.findOne({title: "MongoDB Overview"}) { "_id" : ObjectId("5dd6542170fb13eec3963bf0"), "title": "MongoDB Übersicht", "description": "MongoDB ist keine SQL-Datenbank", "by": "Einführung in die Grundlagen", "url" : "http://de.oldtoolbag.com", "tags": [ "mongodb", "Datenbank", "NoSQL" ], "likes": 100 }
Um Dokumente unter bestimmten Bedingungen abzurufen, können Sie die folgenden Operationen verwenden.
Operation | Format | Beispiel | Ähnliche Anweisungen in RDBMS |
---|---|---|---|
gleich | {<key>:<value>} | db.col.find({"by":"Grund教程"}).pretty() | where by = 'Grund教程' |
kleiner | {<key>:{$lt:<value>}} | db.col.find({"likes":{$lt:50}}).pretty() | where likes < 50 |
kleiner oder gleich | {<key>:{$lte:<value>}} | db.col.find({"likes":{$lte:50}}).pretty() | where likes <= 50 |
größer | {<key>:{$gt:<value>}} | db.col.find({"likes":{$gt:50}}).pretty() | where likes > 50 |
größer oder gleich | {<key>:{$gte:<value>}} | db.col.find({"likes":{$gte:50}}).pretty() | where likes >= 50 |
ungleich | {<key>:{$ne:<value>}} | db.col.find({"likes":{$ne:50}}).pretty() | where likes != 50 |
Werte im Array | {<key>:{$in:[<value1>, <value2>,……<valueN>]}} | db.mycol.find({"name":{$in:["Raj", "Ram", "Raghu"]}}).pretty() | wobei Name mit einem der Werte im Array übereinstimmt: ["Raj", "Ram", "Raghu"] |
Wert nicht im Array enthalten | {<key>:{$nin:<value>}} | db.mycol.find({"name":{$nin:["Ramu", "Raghav"]}}).pretty() | Name-Wert nicht im Array enthalten: ["Ramu", "Raghav"] oder gar nicht vorhanden |
Um Dokumente auf Basis der "UND"-Bedingung abzurufen, müssen Sie den Schlüsselwort $and verwenden. Hier ist die Grund语法 von AND-
>db.mycol.find({ $and: [ { <key1> :<value1> }, { <key2> :<value2> } ] )
Der folgende Beispiel zeigt alle Tutorials, die von "Einführung in die Grundlagen" geschrieben wurden und den Titel "MongoDB Übersicht" tragen.
> db.mycol.find({$and:[{"by":"Einführung in die Grundlagen"},{"title": "MongoDB Übersicht"}]}).pretty() { "_id" : ObjectId("5dd4e2cc0821d3b44607534c") "title": "MongoDB Übersicht", "description": "MongoDB ist keine SQL-Datenbank", "by": "Einführung in die Grundlagen", "url": "https://de.oldtoolbag.com", "tags": [ "mongodb", "Datenbank", "NoSQL" ], "likes": 100 } >
Für das obige Beispiel wäre die äquivalente where-Klausel' where by = 'Einführung in die Grundlagen' AND title = 'MongoDB Übersicht' '. Sie können eine beliebige Anzahl von Schlüssel-Wert-Paaren an den find-Ausdruck übergeben.
Um Dokumente auf Basis der "ODER"-Bedingung abzurufen, müssen Sie$orSchlüsselwort. Hier istODER的基本语法:
>db.mycol.find( { $or: [ {key1: value1}, {key2:value2} ] } ).pretty()
Der folgende Beispiel zeigt alle Tutorials, die von "tutorials point" geschrieben wurden oder den Titel "MongoDB Übersicht" tragen.
>db.mycol.find({$or:[{"by":"tutorials point"},{"title": "MongoDB Übersicht"}]}).pretty() { "_id": ObjectId(7df78ad8902 "title": "MongoDB Übersicht", "description": "MongoDB不是SQL数据库", "by": "基础教程", "url": "http://de.oldtoolbag.com", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" } >
下面的示例将显示点赞(likes)大于10且标题为“ MongoDB概述”或 by为“ 基础教程”的文档。等效于SQL where子句为 "where likes> "10 AND (by = '基础教程' OR title = 'MongoDB概述')'
>db.mycol.find({"likes": {$gt:10}, $or: [{"by": "tutorials point"}, {"title": "MongoDB Overview"}).pretty() { "_id": ObjectId(7df78ad8902 "description": "MongoDB不是SQL数据库", "by": "基础教程", "url": "http://de.oldtoolbag.com", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" } >
要根据NOR条件查询文档,需要使用$nor关键字。以下是NOR的基本语法:
>db.COLLECTION_NAME.find( { $nor: [ {key1: value1}, {key2:value2} ] } )
假设我们在集合 empDetails 中插入了3个文档,如下所示-
db.empDetails.insertMany( [ { First_Name: "Radhika", Last_Name: "Sharma", Age: "26", e_mail: "[email protected]", phone: "9000012345" } { First_Name: "Rachel", Last_Name: "Christopher", Age: "27", e_mail: "[email protected]", phone: "9000054321" } { First_Name: "Fathima", Last_Name: "Sheik", Age: "24", e_mail: "[email protected]", phone: "9000054321" } ] )
以下示例将检索名字不是“Radhika”且名字也不是“Christopher”的文档
> db.empDetails.find( { $nor:[ 40 {"First_Name": "Radhika"}, {"Last_Name": "Christopher"} ] } ).pretty() { "_id" : ObjectId("5dd631f270fb13eec3963bef"), "First_Name" : "Fathima", "Last_Name" : "Sheik", "Age" : "24", "e_mail" : "[email protected]", "phone" : "9000054321" }
Um Dokumente basierend auf NOT-Bedingungen abzurufen, müssen Sie den Schlüssel $not verwenden. Hier istNOTGrundgrammatik:
>db.COLLECTION_NAME.find( { $NOT: [ {key1: value1}, {key2:value2} ] } ).pretty()
Nachfolgender Beispiel wird Dokumente abrufen, deren Alter nicht über25Jahre alter Dokument
> db.empDetails.find({ "Age": { $not: { $gt: "25} { "_id" : ObjectId("5dd6636870fb13eec3963bf7") "First_Name" : "Fathima", "Last_Name" : "Sheik", "Age" : "24", "e_mail" : "[email protected]", "phone" : "9000054321" }