Computer >> 컴퓨터 >  >> 프로그램 작성 >> MongoDB

MongoDB에서 필드가 null이거나 설정되지 않은 레코드를 쿼리하는 방법은 무엇입니까?

<시간/>

두 가지 경우를 해결해 보겠습니다 -

사례 1 − 필드가 존재하고 null로 설정된 경우 구문은 다음과 같습니다.

db.yourCollectionName.count({yourFieldName: null});

사례 1 − 필드가 존재하지 않고 설정되지 않은 경우 구문은 다음과 같습니다.

db.yourCollectionName.count({yourFieldName: {$exists: false}});

위의 두 구문을 모두 이해하기 위해 문서로 컬렉션을 생성해 보겠습니다. 문서로 컬렉션을 생성하는 쿼리는 다음과 같습니다 -

> db.fieldIsNullOrNotSetDemo.insertOne({"EmployeeName":"Larry","EmployeeAge":null,"EmployeeSalary":18500});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a995c6cea1f28b7aa07fe")
}
> db.fieldIsNullOrNotSetDemo.insertOne({"EmployeeName":"Bob","EmployeeAge":21,"EmployeeSalary":23500});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a99836cea1f28b7aa07ff")
}

> db.fieldIsNullOrNotSetDemo.insertOne({"EmployeeName":"Carol","EmployeeSalary":45500});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a999b6cea1f28b7aa0800")
}
> db.fieldIsNullOrNotSetDemo.insertOne({"EmployeeName":"Mike","EmployeeAge":null,"EmployeeSalary":45500});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a99bb6cea1f28b7aa0801")
}
> db.fieldIsNullOrNotSetDemo.insertOne({"EmployeeName":"Ramit","EmployeeSalary":85500});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8a99d76cea1f28b7aa0802")
}

find() 메서드를 사용하여 컬렉션의 모든 문서를 표시합니다. 쿼리는 다음과 같습니다 -

> db.fieldIsNullOrNotSetDemo.find().pretty();

다음은 출력입니다 -

{
   "_id" : ObjectId("5c8a995c6cea1f28b7aa07fe"),
   "EmployeeName" : "Larry",
   "EmployeeAge" : null,
   "EmployeeSalary" : 18500
}
{
   "_id" : ObjectId("5c8a99836cea1f28b7aa07ff"),
   "EmployeeName" : "Bob",
   "EmployeeAge" : 21,
   "EmployeeSalary" : 23500
}
{
   "_id" : ObjectId("5c8a999b6cea1f28b7aa0800"),
   "EmployeeName" : "Carol",
   "EmployeeSalary" : 45500
}
{
   "_id" : ObjectId("5c8a99bb6cea1f28b7aa0801"),
   "EmployeeName" : "Mike",
   "EmployeeAge" : null,
   "EmployeeSalary" : 45500
}
{
   "_id" : ObjectId("5c8a99d76cea1f28b7aa0802"),
   "EmployeeName" : "Ramit",
   "EmployeeSalary" : 85500
}

사례 1 -

EmployeeAge 필드가 있으며 null로 설정됩니다.

쿼리는 다음과 같습니다 -

> db.fieldIsNullOrNotSetDemo.count({EmployeeAge: null});

다음은 출력입니다 -

4

사례 2 -

'EmployeeAge' 필드가 존재하지 않고 설정되지 않았습니다. 쿼리는 다음과 같습니다 -

> db.fieldIsNullOrNotSetDemo.count({EmployeeAge: {$exists: false}});

다음은 출력입니다 -

2