Если это точно null
(в отличие от не заданного):
db.states.find({"cities.name": null})
(но, как указывает javierfp, он также соответствует документам, у которых вообще нет массива городов, я предполагаю,что они делают).
Если это свойство не установлено:
db.states.find({"cities.name": {"$exists": false}})
Я проверил вышеизложенное с коллекцией, созданной с этими двумя вставками:
db.states.insert({"cities": [{name: "New York"}, {name: null}]})
db.states.insert({"cities": [{name: "Austin"}, {color: "blue"}]})
Первый запрос находит первое состояние, второй запрос находит второе.Если вы хотите найти их обоих с помощью одного запроса, вы можете сделать запрос $or
:
db.states.find({"$or": [
{"cities.name": null},
{"cities.name": {"$exists": false}}
]})