English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
在本章中,我们将学习如何从MongoDB集合中查询文档。
要查询MongoDB集合中的数据,您需要使用MongoDB的find()方法。
find()方法的基本语法如下-
>db.COLLECTION_NAME.find()
find() 方法将以非结构化方式显示所有文档。
假设我们已经创建了一个名为 mycol 的集合-
> 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://ko.oldtoolbag.com", tags: ["mongodb", "database", "NoSQL"], likes: 100 }, { title: "NoSQL Database", description: "NoSQL 데이터베이스는 테이블이 없습니다", by: "기본 강의", url: "http://ko.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://ko.oldtoolbag.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 } { "_id" : ObjectId("5dd4e2cc0821d3b44607534d"), "title" : "NoSQL Database", "description" : "NoSQL 데이터베이스는 테이블이 없습니다", "by" : "기본 강의", "url" : "http://ko.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 Overview", "description": "MongoDB는 SQL 데이터베이스가 아닙니다", "by": "기본 튜토리얼", "url" : "http://ko.oldtoolbag.com", "tags": [ "mongodb", "database", "NoSQL" ], "likes": : 100 } { "_id" : ObjectId("5dd4e2cc0821d3b44607534d"), "title" : "NoSQL Database", "description" : "NoSQL 데이터베이스에는 테이블이 없습니다" "by": "기본 튜토리얼", "url" : "http://ko.oldtoolbag.com", "tags": [ "mongodb", "database", "NoSQL" ], "likes": : 20, "comments" : [ { "user" : "user1", "message" : "My first comment", "dateCreated" : ISODate("2013-12-09T21:05:00Z"), "like" : 0 } ] }
find() 메서드 외에도 다른 메서드가 있습니다.findOne()메서드는 하나의 문서만 반환합니다.
>db.COLLECTIONNAME.findOne()
다음 예제는 제목이 MongoDB Overview인 문서를 검색합니다.
> db.mycol.findOne({title: "MongoDB Overview"}) { "_id" : ObjectId("5dd6542170fb13eec3963bf0"), "title": "MongoDB Overview", "description": "MongoDB는 SQL 데이터베이스가 아닙니다", "by": "기본 튜토리얼", "url" : "http://ko.oldtoolbag.com", "tags": [ "mongodb", "database", "NoSQL" ], "likes": : 100 }
특정 조건에 따라 문서를 조회하려면 다음 작업을 사용할 수 있습니다.
작업 | 형식 | 예제 | RDBMS에서 비슷한 문장 |
---|---|---|---|
같습니다 | {<key>:<value>} | db.col.find({"by":"기본 강의"}).pretty() | where by = '기본 강의' |
작습니다 | {<key>:{$lt:<value>}} | db.col.find({"likes":{$lt:50}).pretty() | where likes < 50 |
또는 작게 같습니다 | {<key>:{$lte:<value>}} | db.col.find({"likes":{$lte:50}).pretty() | where likes <= 50 |
크게입니다 | {<key>:{$gt:<value>}} | db.col.find({"likes":{$gt:50}).pretty() | where likes > 50 |
또는 크게 같습니다 | {<key>:{$gte:<value>}} | db.col.find({"likes":{$gte:50}).pretty() | where likes >= 50 |
불 같습니다 | {<key>:{$ne:<value>}} | db.col.find({"likes":{$ne:50}).pretty() | where likes != 50 |
값이 배열에 있습니다 | {<key>:{$in:[<value1> <value2>……<valueN>] | db.mycol.find({"name":{$in:["Raj", "Ram", "Raghu"]}}).pretty() | name은 배열의 어떤 값과도 일치합니다 :["Raj", "Ram", "Raghu"] |
배열에 없습니다 | {<key>:{$nin:<value>}} | db.mycol.find({"name":{$nin:["Ramu", "Raghav"]}}).pretty() | name 값이 배열에 없습니다 :["Ramu", "Raghav"] 또는, 그것이 존재하지 않습니다 |
문서를 "AND" 조건에 기반으로 검색하려면 $and 키워드를 사용해야 합니다. 다음은 AND의 기본 문법입니다-
>db.mycol.find({ $and: [ {<key1>:<value1>}, { <key2>:<value2>} ] )}
다음 예제는 "기본 튜토리얼"이 작성하거나 "MongoDB Overview"이 제목인 모든 지침서를 표시합니다.
>db.mycol.find({$and:[{"by":"기본 튜토리얼"},{"title": "MongoDB Overview"}]}).pretty() { "_id" : ObjectId("5dd4e2cc0821d3b44607534c"), "title": "MongoDB Overview", "description": "MongoDB는 SQL 데이터베이스가 아닙니다", "by": "기본 튜토리얼", "url": "https://ko.oldtoolbag.com", "tags": [ "mongodb", "database", "NoSQL" ], "likes": : 100 } >
위 예제와等效 where 절은 다음과 같습니다'where by = '기본 튜토리얼' AND title = 'MongoDB Overview' '다음은 find 절에任意수의 키, 값 쌍을 전달할 수 있습니다.
문서를 "OR" 조건에 기반으로 검색하려면 사용해야 합니다$or키워드. 다음은OR기본 문법:
>db.mycol.find( { $or: [ {key1: value1}, {key2:value2} ] } ).pretty()
다음 예제는 "tutorials point"이 작성하거나 "MongoDB Overview"이 제목인 모든 지침서를 표시합니다.
>db.mycol.find({$or:[{"by":"tutorials point"},{"title": "MongoDB Overview"}]}).pretty() { "_id": ObjectId(7df78ad8902c), "title": "MongoDB Overview", "description": "MongoDB는 SQL 데이터베이스가 아닙니다", "by": "기본 튜토리얼", "url": "http://ko.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(7df78ad8902c), "title": "MongoDB 개요", "description": "MongoDB는 SQL 데이터베이스가 아닙니다", "by": "기본 튜토리얼", "url": "http://ko.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" }
NOT 조건으로 문서를 검색하려면 $not 키워드를 사용해야 합니다. 다음은NOT기본 문법:
> db.COLLECTION_NAME.find( { $NOT: [ {key1: value1}, {key2:value2} ] } ).pretty()
다음 예제는 年龄 불과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" }