MongoDB: Jak sprawdzić czy pole ma daną wartość lub null?

Opublikowano: 21.04.2022 - tagi: MongoDB Baza danych Zapytanie

Załóżmy, że mamy taki model danych:

{
	title: string,
	status: string | null
}

Poniżej przykład danych na podstawie tego modelu:

[
	{
		title: "Status Draft"
		status: "draft"
	}
	{
		title: "Status Null"
		status: null
	},
	{
		title: "Status Closed"
		status: "closed"
	}
]

I teraz potrzebujemy napisać zapytanie, które pobierze nam dane na podstawie pola status: pobierz rekordy dla wartości X lub dla null.

Wystarczy napisać:

db.find({
  $or: [
		{ 
			status: { $eq: 'draft' }
		},
		{
			status: { $type: 'null' } 
		}
	]
})

Korzystamy tutaj z operatora $or: sprawdzamy najpierw, czy istnieją rekordy o podanej wartości i dodatkowo informujemy za pomocą $type, że chcemy pobrać także rekordy z wartością null.

W tym przypadku zwróci dwa rekordy:

[
	{
		title: "Status Draft"
		status: "draft"
	}
	{
		title: "Status Null"
		status: null
	}
]