对于已经有值的field,在mongodb中可以使用$unset操作符来重置该field。
http://docs.mongodb.org/manual/reference/operator/update/unset/
dbDao 百度贴吧:http://tieba.baidu.com/dbdao
MongoDB技术学习QQ群: 421431253
具体语法如下:
{ $unset: { <field1>: "", ... } } 例如 db.products.update( { sku: "unknown" }, { $unset: { quantity: "", instock: "" } } )
具体使用的例子:
db.dbdao_sample.insert({"_id":3,"a":7,"c":[3,4,7,-1,-1]});
> db.dbdao_sample.update({"_id":3},{"$unset" : {"c":""}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.dbdao_sample.find();
{ "_id" : 3, "a" : 7 }
db.dbdao_sample.insert({"_id":4,"a":7,"c":[3,4,7,-1,-1]});
db.dbdao_sample.update({"_id":4},{"$remove" : {"c":""}});
没有$remove这个操作符
> db.dbdao_sample.update({"_id":4},{"c": {"$delete":true }});
2015-05-05T20:38:33.817+0800 E QUERY Error: field names cannot start with $ [$delete]
at Error (<anonymous>)
at DBCollection._validateForStorage (src/mongo/shell/collection.js:161:19)
at DBCollection._validateForStorage (src/mongo/shell/collection.js:165:18)
at DBCollection._validateUpdateDoc (src/mongo/shell/collection.js:388:14)
at Object.findOperations.updateOne (src/mongo/shell/bulk_api.js:675:20)
at DBCollection.update (src/mongo/shell/collection.js:455:22)
at (shell):1:17 at src/mongo/shell/collection.js:161
> db.dbdao_sample.update({"_id":4},{"c":null});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
>
> db.dbdao_sample.find({"_id":4});
{ "_id" : 4, "c" : null }
> db.dbdao_sample.update({"_id":4},{"c":1});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.dbdao_sample.find({"_id":4});
{ "_id" : 4, "c" : 1 }

