我可以$ 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/