MongoDB - Dokumen Kueri

Dalam bab ini, kita akan belajar bagaimana melakukan kueri dokumen dari koleksi MongoDB.

Metode find ()

Untuk meminta data dari koleksi MongoDB, Anda perlu menggunakan MongoDB's find() metode.

Sintaksis

Sintaks dasar find() metode adalah sebagai berikut -

>db.COLLECTION_NAME.find()

find() metode akan menampilkan semua dokumen dengan cara yang tidak terstruktur.

Contoh

Asumsikan kita telah membuat koleksi bernama mycol sebagai -

> use sampleDB
switched to db sampleDB
> db.createCollection("mycol")
{ "ok" : 1 }
>

Dan memasukkan 3 dokumen di dalamnya menggunakan metode insert () seperti yang ditunjukkan di bawah ini -

> 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
			}
		]
	}
])

Metode berikut mengambil semua dokumen dalam koleksi -

> 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 } ] }
>

Metode cantik ()

Untuk menampilkan hasil dalam format, Anda dapat menggunakan metode pretty ().

Sintaksis

>db.COLLECTION_NAME.find().pretty()

Contoh

Contoh berikut mengambil semua dokumen dari koleksi bernama mycol dan mengaturnya dalam format yang mudah dibaca.

> 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
		}
	]
}

Metode findOne ()

Terlepas dari metode find (), ada findOne() metode, yang mengembalikan hanya satu dokumen.

Sintaksis

>db.COLLECTIONNAME.findOne()

Contoh

Contoh berikut mengambil dokumen dengan judul Ikhtisar MongoDB.

> 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 Dimana Klausul Setara di MongoDB

Untuk membuat kueri dokumen berdasarkan beberapa kondisi, Anda bisa menggunakan operasi berikut ini.

Operasi Sintaksis Contoh Setara RDBMS
Persamaan {<key>: {$ eg; <value>}} db.mycol.find ({"by": "tutorials point"}). pretty () dimana dengan = 'titik tutorial'
Kurang dari {<key>: {$ lt: <value>}} db.mycol.find ({"suka": {$ lt: 50}}). cantik () dimana suka <50
Kurang Dari Sama {<key>: {$ lte: <value>}} db.mycol.find ({"suka": {$ lte: 50}}). cantik () dimana suka <= 50
Lebih besar dari {<key>: {$ gt: <value>}} db.mycol.find ({"suka": {$ gt: 50}}). pretty () dimana suka> 50
Lebih Dari Sama {<key>: {$ gte: <value>}} db.mycol.find ({"suka": {$ gte: 50}}). cantik () dimana suka> = 50
Tidak Sama {<key>: {$ ne: <value>}} db.mycol.find ({"suka": {$ ne: 50}}). pretty () dimana suka! = 50
Nilai dalam larik {<key>: {$ in: [<value1>, <value2>, …… <valueN>]}} db.mycol.find ({"name": {$ in: ["Raj", "Ram", "Raghu"]}}). cantik () Jika nama cocok dengan salah satu nilai di: ["Raj", "Ram", "Raghu"]
Nilai tidak dalam larik {<key>: {$ nin: <value>}} db.mycol.find ({"name": {$ nin: ["Ramu", "Raghav"]}}). cantik () Di mana nilai nama tidak ada dalam array: ["Ramu", "Raghav"] atau, tidak ada sama sekali

DAN di MongoDB

Sintaksis

Untuk meminta dokumen berdasarkan kondisi DAN, Anda perlu menggunakan $ dan kata kunci. Berikut ini adalah sintaks dasar dari AND -

>db.mycol.find({ $and: [ {<key1>:<value1>}, { <key2>:<value2>} ] })

Contoh

Contoh berikut akan menampilkan semua tutorial yang ditulis oleh 'tutorials point' dan yang berjudul 'MongoDB Overview'.

> 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
}
>

Untuk contoh yang diberikan di atas, ekuivalen klausa where akan ' where by = 'tutorials point' AND title = 'MongoDB Overview' '. Anda dapat memberikan sejumlah kunci, pasangan nilai di klausa find.

ATAU di MongoDB

Sintaksis

Untuk meminta dokumen berdasarkan kondisi ATAU, Anda perlu menggunakan $orkata kunci. Berikut ini adalah sintaks dasarOR -

>db.mycol.find(
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
).pretty()

Contoh

Contoh berikut akan menampilkan semua tutorial yang ditulis oleh 'tutorials point' atau yang berjudul 'MongoDB Overview'.

>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"
}
>

Menggunakan DAN dan ATAU Bersama

Contoh

Contoh berikut akan menunjukkan dokumen yang memiliki like lebih dari 10 dan berjudul 'MongoDB Overview' atau dengan is 'tutorials point'. SQL Setara dengan klausa'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 di MongoDB

Sintaksis

Untuk query dokumen berdasarkan kondisi NOT, Anda perlu menggunakan $ not keyword. Berikut ini adalah sintaks dasarNOT -

>db.COLLECTION_NAME.find(
	{
		$not: [
			{key1: value1}, {key2:value2}
		]
	}
)

Contoh

Asumsikan kami telah memasukkan 3 dokumen dalam koleksi empDetails seperti yang ditunjukkan di bawah ini -

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"
		}
	]
)

Contoh berikut akan mengambil dokumen yang nama depannya bukan "Radhika" dan nama belakangnya bukan "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"
}

BUKAN di MongoDB

Sintaksis

Untuk query dokumen berdasarkan kondisi NOT, Anda perlu menggunakan $ not keyword berikut adalah sintaks dasar dari NOT -

>db.COLLECTION_NAME.find(
	{
		$NOT: [
			{key1: value1}, {key2:value2}
		]
	}
).pretty()

Contoh

Contoh berikut akan mengambil dokumen yang usianya tidak lebih dari 25

> db.empDetails.find( { "Age": { $not: { $gt: "25" } } } )
{
	"_id" : ObjectId("5dd6636870fb13eec3963bf7"),
	"First_Name" : "Fathima",
	"Last_Name" : "Sheik",
	"Age" : "24",
	"e_mail" : "[email protected]",
	"phone" : "9000054321"
}