Bạn đã thực sự gần đến giải pháp, tất cả những gì bạn cần sử dụng khi tạo chỉ mục:
partialFilterExpression: { serialNr: {$exists:true} }
Đảm bảo có ít nhất phiên bản mongo 3.2
Ví dụ:
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
Tái bút:Có lẽ bạn có thể làm một chút "hack" và sử dụng cái này:partialFilterExpression: { serialNr: {$exists:true}, serialNr: {$gte:0} }
Tôi đã thử sử dụng $ ne, nhưng nó khiến tôi gặp lỗi.