Ответ 1
db.collection.find({"lastname" : {"$exists" : true, "$ne" : ""}})
В оболочке mongo (id опущен для экономии места)
> db.collection.find()
{ "name" : "Angela" }
{ "name" : "David", "lastname" : "" }
{ "name" : "Kyle", "lastname" : "Test" }
{ "name" : "John", "lastname" : null }
> db.collection.find({"lastname" : {"$exists" : true, "$ne" : ""}})
{ "name" : "Kyle", "lastname" : "Test" }
{ "name" : "John", "lastname" : null }
Если вы также хотите отфильтровать совпадения с нулевыми значениями, вам нужно скорректировать критерии следующим образом (мы также можем избавиться от $exists как "$ ne": null позаботится об этом)
> db.collection.find({$and:[{"lastname": {"$ne": null}}, {"lastname": {"$ne": ""}}]})
{ "name" : "Kyle", "lastname" : "Test" }