我有这样的架构
{
'cr':[
{ key: 'key1' },
{ key: 'key2' }
]
}
function addCriteriaKey(id, key, callback) {
var options = {new: false, select: '_id'};
if (typeof key === 'string') {
Model.update({'uid': id}, {'$addToSet': {'cr': {'key': key}}}, options, function (err, data) {
if (err) callback(err, null);
else callback(null, data);
})
} else if (typeof key == 'object' && (key instanceof Array)) {
Model.update({'uid': id}, {'$addToSet': {'cr': {'key': {'$each': key}}}}, options, function (err, data) {
if (err) callback(err, null);
else callback(null, data);
})
}
}
该方法的作用是将key添加到'cr'字段中,如果key是字符串,则直接添加,如果key是字符串数组,则使用'$each'命令将它们全部添加
添加字符串效果很好,添加到字符串数组时出现问题,我希望它可以一个一个添加,但结果不同 例如: addCriteriaKey('id',['111','222', '333'],函数(错误,数据){})
我的预期结果:
{
'cr':[
{ key: '111' }, { key: '222' }, { key: '333' }
]
}
然而结果是:
{
'cr':[
{ key: {'$each':{'111','222','333'}} }
]
}
我想知道这是什么问题?