Se è esattamente null
(anziché non impostato):
db.states.find({"cities.name": null})
(ma come sottolinea javierfp, corrisponde anche a documenti che non hanno alcun array di città, suppongo che lo facciano).
Se la proprietà non è impostata:
db.states.find({"cities.name": {"$exists": false}})
Ho testato quanto sopra con una collezione creata con questi due inserti:
db.states.insert({"cities": [{name: "New York"}, {name: null}]})
db.states.insert({"cities": [{name: "Austin"}, {color: "blue"}]})
La prima query trova il primo stato, la seconda query trova il secondo. Se vuoi trovarli entrambi con una query puoi fare un $or
domanda:
db.states.find({"$or": [
{"cities.name": null},
{"cities.name": {"$exists": false}}
]})