MongoDB의 NOT IN 비교 연산자
-
MongoDB의
$nin
(NOT IN
) 비교 연산자 -
$nin
연산자를find()
메서드와 함께 사용하여 MongoDB에서 필드 쿼리 -
find()
메소드와 함께$nin
연산자를 사용하여 MongoDB에 포함된 문서 쿼리 -
$nin
연산자를find()
메서드와 함께 사용하여 MongoDB에서 배열 쿼리 -
$nin
연산자를find()
메서드와 함께 사용하여 MongoDB에서 문서 배열 쿼리 -
$nin
비교 연산자를update()
메서드와 함께 사용하여 MongoDB에서 필드 값 업데이트 -
MongoDB에서 정규 표현식과 함께
$nin
연산자 사용
비교 연산자는 큰 데이터 세트로 작업할 때 매우 유용합니다. 데이터에서 통찰력을 얻는 것이 도움이 됩니다.
이 튜토리얼은 MongoDB에서 $nin
(NOT IN
) 비교 연산자를 사용하는 방법에 대해 설명합니다.
또한 MongoDB에서 find()
및 update()
메소드와 함께 $nin
을 사용하는 방법을 보여줍니다. 또한 $nin
연산자로 정규식을 사용하는 방법도 배웁니다.
MongoDB의 $nin
(NOT IN
) 비교 연산자
$nin
은 MongoDB의 비교 연산자 중 하나입니다. 이 연산자는 필드 값이 지정된 배열에 속하지 않거나 필드가 존재하지 않는 문서를 선택합니다.
필드에 배열, 문서 배열 또는 포함된 문서 배열이 있는 경우 지정된 배열의 값과 동일한 항목이 없는 배열이 필드에 포함된 문서만 가져옵니다(이 시나리오도 나중에 보게 됩니다. 이 튜토리얼에서).
더 자세히 알아보기 전에 몇 가지 문서가 있는 샘플 컬렉션을 만들어 보겠습니다.
예제 코드:
db.createCollection('students');
db.students.insertMany([
{
"name": {first: "Mehvish", last: "Ashiq"},
"age": 30,
"gender": "Female",
"discipline": "BSCS",
"joining_year": 2014,
"department": "Computer Science",
"courses":[ "Python","Java", "Machine Learning", "Data Science"],
"contact":[
{ phone: { type: "cell", number: "923042516485" }},
{ mail: { type: "official", email: "mehvishofficial@gmail.com"}}
]
},
{
"name": {first: "Aftab", last: "Raza"},
"age": 25,
"gender": "Male",
"discipline": "BSIT",
"joining_year": 2012,
"department": "Information Technology",
"courses":[ "Python","JavaScript", "Information Security"],
"contact":[
{ phone: { type: "landline", number: "111-444-5555" }},
{ mail: { type: "personal", email: "aftab@hotmail.com"}}
]
}
])
db.students.find().pretty()
출력:
{
"_id" : ObjectId("6298ef54271c5124b739d7d3"),
"name" : {
"first" : "Mehvish",
"last" : "Ashiq"
},
"age" : 30,
"gender" : "Female",
"discipline" : "BSCS",
"joining_year" : 2014,
"department" : "Computer Science",
"courses" : [
"Python",
"Java",
"Machine Learning",
"Data Science"
],
"contact" : [
{
"phone" : {
"type" : "cell",
"number" : "923042516485"
}
},
{
"mail" : {
"type" : "official",
"email" : "mehvishofficial@gmail.com"
}
}
]
}
{
"_id" : ObjectId("6298ef54271c5124b739d7d4"),
"name" : {
"first" : "Aftab",
"last" : "Raza"
},
"age" : 25,
"gender" : "Male",
"discipline" : "BSIT",
"joining_year" : 2012,
"department" : "Information Technology",
"courses" : [
"Python",
"JavaScript",
"Information Security"
],
"contact" : [
{
"phone" : {
"type" : "landline",
"number" : "111-444-5555"
}
},
{
"mail" : {
"type" : "personal",
"email" : "aftab@hotmail.com"
}
}
]
}
약간 복잡한 문서가 있는 유일한 이유는 $nin
비교 연산자를 다른 필드와 함께 사용하는 방법을 배우기 위해서입니다. 예를 들어, 단일 필드, 포함된 문서가 있는 필드, 배열이 포함된 필드 및 포함된 문서 배열이 있습니다.
$nin
연산자를 find()
메서드와 함께 사용하여 MongoDB에서 필드 쿼리
예제 코드:
db.students.find({ "joining_year": { $nin: [2011,2014] }}).pretty();
출력:
{
"_id" : ObjectId("6298ef54271c5124b739d7d4"),
"name" : {
"first" : "Aftab",
"last" : "Raza"
},
"age" : 25,
"gender" : "Male",
"discipline" : "BSIT",
"joining_year" : 2012,
"department" : "Information Technology",
"courses" : [
"Python",
"JavaScript",
"Information Security"
],
"contact" : [
{
"phone" : {
"type" : "landline",
"number" : "111-444-5555"
}
},
{
"mail" : {
"type" : "personal",
"email" : "aftab@hotmail.com"
}
}
]
}
이 예에서 find()
메서드와 함께 $nin
연산자를 사용하여 joining_year
가 2011
도 아니고 2014
도 아닌 전체 문서를 검색합니다.
전체 문서 대신 특정 필드만 갖고 싶다면 다음과 같은 방식으로 명령을 사용할 수 있습니다. 1
을 작성하여 컴퓨터 화면에 필드와 해당 값을 인쇄하고 0
은 결과 세트에서 이 필드를 원하지 않음을 의미합니다.
예제 코드:
db.students.find(
{ "joining_year": { $nin: [2011,2014] }},
{"name": 1, "discipline": 1, "department": 1, "_id":0}
).pretty();
출력:
{
"name" : {
"first" : "Aftab",
"last" : "Raza"
},
"discipline" : "BSIT",
"department" : "Information Technology"
}
find()
메소드와 함께 $nin
연산자를 사용하여 MongoDB에 포함된 문서 쿼리
예제 코드:
db.students.find(
{ "name.last": { $nin: ["Raza", "Ali"] }},
{ "name": 1, "gender": 1, "age": 1, "_id":0}
).pretty();
출력:
{
"name" : {
"first" : "Mehvish",
"last" : "Ashiq"
},
"age" : 30,
"gender" : "Female"
}
샘플 문서에는 이 튜토리얼의 name
이라는 필드가 있으며, 여기에는 두 개의 필드(first
및 last
)가 있는 포함된 문서가 더 포함됩니다. name
필드와 함께 $nin
비교 연산자를 사용하기 위해 점 표기법 name.first
를 사용합니다.
이 코드 조각의 경우 name.last
값이 $nin
에 대해 지정된 배열의 구성원이 아닌 문서의 name
, age
및 gender
를 검색하려고 합니다. 운영자.
name.last
가 Raza
도 Ali
도 아닌 문서에서 지정된 필드를 가져옵니다. $nin
연산자와 함께 AND
조건을 사용할 수도 있습니다.
예제 코드:
db.students.find(
{ "name.last": { $nin: ["Raza", "Ali"]}, "name.first": {$nin: ["Mehvish"]}},
{ "name": 1, "gender": 1, "age": 1, "_id":0}
).pretty();
이번에는 첫 번째 문서가 name.first
의 값으로 Mehvish
를 갖고 있고 두 번째 문서는 name.last
필드의 값으로 Raza
를 포함하는 두 개의 문서가 있기 때문에 출력을 얻지 못할 것입니다. . 따라서 두 문서 모두 결과 집합에서 제외되고 아무 것도 얻지 못했습니다.
$nin
연산자를 find()
메서드와 함께 사용하여 MongoDB에서 배열 쿼리
예제 코드:
db.students.find(
{ "courses": { $nin: ["JavaScript", "Networking", "Psychology"] }},
{ "courses": 1, "department": 1, "_id":0}
).pretty();
출력:
{
"department" : "Computer Science",
"courses" : [
"Python",
"Java",
"Machine Learning",
"Data Science"
]
}
이 출력을 주의 깊게 이해하십시오. 이 출력에서 course
필드는 $nin
연산자에 대해 지정된 배열의 값과 동일한 요소가 없는 배열을 보유합니다.
JavaScript
, Networking
또는 Psychology
와 같은 요소가 있는 배열을 포함하는 필드가 결과 집합에서 제외되는 전체 문서입니다.
$nin
연산자를 find()
메서드와 함께 사용하여 MongoDB에서 문서 배열 쿼리
이 튜토리얼의 시작 부분에서 students
컬렉션을 채우는 동안 사용한 contact
필드를 주의 깊게 관찰하십시오. 여기에는 각 문서에 포함된(중첩된) 문서가 있는 문서 배열이 포함됩니다.
$nin
연산자를 사용하여 쿼리하는 방법은 무엇입니까? 아래 주어진 예를 참조하십시오.
db.students.find(
{ "contact.phone.type": { $nin: ["cell"] }},
{ "contact": 1, "department": 1, "_id":0}
).pretty();
출력:
{
"department" : "Information Technology",
"contact" : [
{
"phone" : {
"type" : "landline",
"number" : "111-444-5555"
}
},
{
"mail" : {
"type" : "personal",
"email" : "aftab@hotmail.com"
}
}
]
}
$nin
비교 연산자를 update()
메서드와 함께 사용하여 MongoDB에서 필드 값 업데이트
예제 코드:
db.students.update(
{ "joining_year": {$nin: [2011,2014]}},
{ $set: {"joining_year": 2000}}
);
이 코드 스니펫에서 joining_year
가 2014
도 아니고 2011
도 아닌 문서를 검색한 다음 joining_year
값을 2000
으로 설정합니다. 그런 다음 다음 명령을 사용하여 업데이트된 문서를 확인합니다.
db.students.find().pretty()
MongoDB에서 정규 표현식과 함께 $nin
연산자 사용
예제 코드:
var array_of_regex = [/Data+/];
db.students.find(
{ "courses": {$nin: array_of_regex}},
{"name":1, "courses":1, "department":1, "_id":0}
).pretty();
출력:
{
"name" : {
"first" : "Aftab",
"last" : "Raza"
},
"department" : "Information Technology",
"courses" : [
"Python",
"JavaScript",
"Information Security"
]
}
이 예에서는 다른 정규식을 포함할 수 있는 배열을 만듭니다. 지금은 정규 표현식이 하나만 있습니다.
정규식 배열을 만들어야 하는 이유는 무엇입니까? $nin
은 비교할 배열을 사용하기 때문입니다.