MongoDB - Abfragedokument
In diesem Kapitel erfahren Sie, wie Sie Dokumente aus der MongoDB-Sammlung abfragen.
Die find () -Methode
Um Daten aus der MongoDB-Sammlung abzufragen, müssen Sie MongoDBs verwenden find() Methode.
Syntax
Die grundlegende Syntax von find() Methode ist wie folgt -
>db.COLLECTION_NAME.find()
find() Die Methode zeigt alle Dokumente nicht strukturiert an.
Beispiel
Angenommen, wir haben eine Sammlung mit dem Namen mycol erstellt als -
> use sampleDB
switched to db sampleDB
> db.createCollection("mycol")
{ "ok" : 1 }
>
Und fügen Sie 3 Dokumente mit der Methode insert () ein, wie unten gezeigt -
> db.mycol.insert([
{
title: "MongoDB Overview",
description: "MongoDB is no SQL database",
by: "tutorials point",
url: "http://www.tutorialspoint.com",
tags: ["mongodb", "database", "NoSQL"],
likes: 100
},
{
title: "NoSQL Database",
description: "NoSQL database doesn't have tables",
by: "tutorials point",
url: "http://www.tutorialspoint.com",
tags: ["mongodb", "database", "NoSQL"],
likes: 20,
comments: [
{
user:"user1",
message: "My first comment",
dateCreated: new Date(2013,11,10,2,35),
like: 0
}
]
}
])
Die folgende Methode ruft alle Dokumente in der Sammlung ab -
> db.mycol.find()
{ "_id" : ObjectId("5dd4e2cc0821d3b44607534c"), "title" : "MongoDB Overview", "description" : "MongoDB is no SQL database", "by" : "tutorials point", "url" : "http://www.tutorialspoint.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
{ "_id" : ObjectId("5dd4e2cc0821d3b44607534d"), "title" : "NoSQL Database", "description" : "NoSQL database doesn't have tables", "by" : "tutorials point", "url" : "http://www.tutorialspoint.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 20, "comments" : [ { "user" : "user1", "message" : "My first comment", "dateCreated" : ISODate("2013-12-09T21:05:00Z"), "like" : 0 } ] }
>
Die hübsche () Methode
Um die Ergebnisse formatiert anzuzeigen, können Sie die Methode pretty () verwenden.
Syntax
>db.COLLECTION_NAME.find().pretty()
Beispiel
Das folgende Beispiel ruft alle Dokumente aus der Sammlung mit dem Namen mycol ab und ordnet sie in einem einfach zu lesenden Format an.
> db.mycol.find().pretty()
{
"_id" : ObjectId("5dd4e2cc0821d3b44607534c"),
"title" : "MongoDB Overview",
"description" : "MongoDB is no SQL database",
"by" : "tutorials point",
"url" : "http://www.tutorialspoint.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
{
"_id" : ObjectId("5dd4e2cc0821d3b44607534d"),
"title" : "NoSQL Database",
"description" : "NoSQL database doesn't have tables",
"by" : "tutorials point",
"url" : "http://www.tutorialspoint.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 20,
"comments" : [
{
"user" : "user1",
"message" : "My first comment",
"dateCreated" : ISODate("2013-12-09T21:05:00Z"),
"like" : 0
}
]
}
Die findOne () -Methode
Abgesehen von der find () -Methode gibt es findOne() Methode, die nur ein Dokument zurückgibt.
Syntax
>db.COLLECTIONNAME.findOne()
Beispiel
Das folgende Beispiel ruft das Dokument mit dem Titel MongoDB Overview ab.
> db.mycol.findOne({title: "MongoDB Overview"})
{
"_id" : ObjectId("5dd6542170fb13eec3963bf0"),
"title" : "MongoDB Overview",
"description" : "MongoDB is no SQL database",
"by" : "tutorials point",
"url" : "http://www.tutorialspoint.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
RDBMS Where-Klauseläquivalente in MongoDB
Um das Dokument unter bestimmten Bedingungen abzufragen, können Sie die folgenden Vorgänge verwenden.
Betrieb | Syntax | Beispiel | RDBMS-Äquivalent |
---|---|---|---|
Gleichberechtigung | {<key>: {$ eg; <value>}} | db.mycol.find ({"by": "tutorials point"}). pretty () | where by = 'Tutorials zeigen' |
Weniger als | {<Schlüssel>: {$ lt: <Wert>}} | db.mycol.find ({"liken": {$ lt: 50}}). hübsch () | wo mag <50 |
Weniger als gleich | {<key>: {$ lte: <value>}} | db.mycol.find ({"liken": {$ lte: 50}}). hübsch () | wo mag <= 50 |
Größer als | {<key>: {$ gt: <value>}} | db.mycol.find ({"liken": {$ gt: 50}}). hübsch () | wo mag> 50 |
Größer als gleich | {<key>: {$ gte: <value>}} | db.mycol.find ({"liken": {$ gte: 50}}). hübsch () | wo mag> = 50 |
Nicht gleich | {<key>: {$ ne: <value>}} | db.mycol.find ({"liken": {$ ne: 50}}). hübsch () | wo mag! = 50 |
Werte in einem Array | {<key>: {$ in: [<value1>, <value2>, …… <valueN>]}} | db.mycol.find ({"name": {$ in: ["Raj", "Ram", "Raghu"]}}). pretty () | Wobei der Name mit einem der Werte in übereinstimmt: ["Raj", "Ram", "Raghu"] |
Werte nicht in einem Array | {<key>: {$ nin: <value>}} | db.mycol.find ({"name": {$ nin: ["Ramu", "Raghav"]}}). pretty () | Wo sich Namenswerte nicht im Array befinden: ["Ramu", "Raghav"] oder überhaupt nicht vorhanden |
UND in MongoDB
Syntax
Um Dokumente basierend auf der UND-Bedingung abzufragen, müssen Sie $ und das Schlüsselwort verwenden. Es folgt die grundlegende Syntax von AND -
>db.mycol.find({ $and: [ {<key1>:<value1>}, { <key2>:<value2>} ] })
Beispiel
Das folgende Beispiel zeigt alle Tutorials, die von 'tutorials point' geschrieben wurden und deren Titel 'MongoDB Overview' lautet.
> db.mycol.find({$and:[{"by":"tutorials point"},{"title": "MongoDB Overview"}]}).pretty()
{
"_id" : ObjectId("5dd4e2cc0821d3b44607534c"),
"title" : "MongoDB Overview",
"description" : "MongoDB is no SQL database",
"by" : "tutorials point",
"url" : "http://www.tutorialspoint.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
>
Für das oben angegebene Beispiel entspricht die where-Klausel ' where by = 'tutorials point' AND title = 'MongoDB Overview' '. Sie können in der find-Klausel eine beliebige Anzahl von Schlüssel-Wert-Paaren übergeben.
ODER in MongoDB
Syntax
Um Dokumente basierend auf der ODER-Bedingung abzufragen, müssen Sie verwenden $orStichwort. Es folgt die grundlegende Syntax vonOR - -
>db.mycol.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
Beispiel
Das folgende Beispiel zeigt alle Tutorials, die von 'tutorials point' geschrieben wurden oder deren Titel 'MongoDB Overview' lautet.
>db.mycol.find({$or:[{"by":"tutorials point"},{"title": "MongoDB Overview"}]}).pretty()
{
"_id": ObjectId(7df78ad8902c),
"title": "MongoDB Overview",
"description": "MongoDB is no sql database",
"by": "tutorials point",
"url": "http://www.tutorialspoint.com",
"tags": ["mongodb", "database", "NoSQL"],
"likes": "100"
}
>
UND und ODER zusammen verwenden
Beispiel
Das folgende Beispiel zeigt die Dokumente, deren Likes größer als 10 sind und deren Titel entweder "MongoDB Overview" oder "tutorials point" lautet. Äquivalente SQL where-Klausel'where likes>10 AND (by = 'tutorials point' OR title = 'MongoDB Overview')'
>db.mycol.find({"likes": {$gt:10}, $or: [{"by": "tutorials point"},
{"title": "MongoDB Overview"}]}).pretty()
{
"_id": ObjectId(7df78ad8902c),
"title": "MongoDB Overview",
"description": "MongoDB is no sql database",
"by": "tutorials point",
"url": "http://www.tutorialspoint.com",
"tags": ["mongodb", "database", "NoSQL"],
"likes": "100"
}
>
NOR in MongoDB
Syntax
Um Dokumente basierend auf der NOT-Bedingung abzufragen, müssen Sie das Schlüsselwort $ not verwenden. Es folgt die grundlegende Syntax vonNOT - -
>db.COLLECTION_NAME.find(
{
$not: [
{key1: value1}, {key2:value2}
]
}
)
Beispiel
Angenommen, wir haben 3 Dokumente in die Sammlung eingefügt empDetails wie unten gezeigt -
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"
}
]
)
Das folgende Beispiel ruft die Dokumente ab, deren Vorname nicht "Radhika" und Nachname nicht "Christopher" ist.
> 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"
}
NICHT in MongoDB
Syntax
Um Dokumente basierend auf der NOT-Bedingung abzufragen, müssen Sie das Schlüsselwort $ not verwenden. Dies ist die grundlegende Syntax von NOT - -
>db.COLLECTION_NAME.find(
{
$NOT: [
{key1: value1}, {key2:value2}
]
}
).pretty()
Beispiel
Im folgenden Beispiel werden die Dokumente abgerufen, deren Alter nicht älter als 25 Jahre ist
> db.empDetails.find( { "Age": { $not: { $gt: "25" } } } )
{
"_id" : ObjectId("5dd6636870fb13eec3963bf7"),
"First_Name" : "Fathima",
"Last_Name" : "Sheik",
"Age" : "24",
"e_mail" : "[email protected]",
"phone" : "9000054321"
}