我可以$ addToSet和插入数组?
我正在使用Mongoose,而我的Schema如下所示:
var WalletSchema = new Schema({ accounts: [String] });
我的查询(Node.js)如下所示:
Wallet.update {accounts: account}, {$addToSet: {accounts: account}}, {upsert: true}, (err, updWallet) -> asyncCb err
但是,我的数据库中没有任何wallets
,我预计这会上升。 它不是。 相反,它会返回一个错误: MongoError: Cannot apply $addToSet modifier to non-array
难道我做错了什么?
您必须在首次创build时使用空账户数组初始化您的账户文档,如果您的第一个$addToSet
失败,则使用$push
。 如果该字段不存在, $push
会创build一个新字段, $addToSet
不会。
Mongodb 3.2现在支持此行为
从MongoDB文档: 如果该字段不在文档中更新,$ addToSet创build数组字段与指定值作为其元素。
https://docs.mongodb.org/manual/reference/operator/update/addToSet/