Всъщност бяхте доста близо до решението, всичко, което трябва да използвате, когато създавате индекс:
partialFilterExpression: { serialNr: {$exists:true} }
Уверете се, че имате поне 3.2 версия на mongo
Пример :
db.col.createIndex({a:1, b:1},{unique:true, partialFilterExpression: { a: {$exists:true} })
db.col.save({a:50, b:27}) //pass
db.col.save({a:50, b:27}) //fails
db.col.save({b:27}) //pass
db.col.save({b:27}) //pass
db.col.save({b:27}) //pass
db.col.save({a:50, b:27}) //fails
db.col.save({a:50}) //pass
db.col.save({a:50}) //fails
PS:Може би можете да направите малък „хак“ и да използвате това:partialFilterExpression: { serialNr: {$exists:true}, serialNr: {$gte:0} }
Опитах да използвам $ne, но ми извеждаше грешка.