我有这样的架构
{
'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);
})
}
}
这个方法的作用是将键添加到'cr'字段中,如果键是一个字符串,直接添加它,如果键是一个字符串数组,那么通过起诉'$ each'命令将它们全部添加
添加字符串效果很好,添加到字符串数组时问题就会增加,我希望它可以逐个添加,但结果是不同的例如:addCriteriaKey('id',['111','222', '333'],功能(ERR,数据){})
我的预期结果:
{
'cr':[
{ key: '111' }, { key: '222' }, { key: '333' }
]
}
但结果是:
{
'cr':[
{ key: {'$each':{'111','222','333'}} }
]
}
我想知道这有什么问题?
1 回答
或者我们可以这样做,
或使用下划线将数组排序到键值数组中