我在MongoDB中有如下数据,
项目数据
{
id:1,
items: {3:'three', 4:'four'}
},
{
id:2,
items: {}
},
{
id:3,
items: {1:'one', 2:'two', 6:'six'}
},
{
id:4,
items: {1:'one', 2:'two', 'three'}
},
{
id:5,
items: {1:'one', 2:'two'}
},
{
id:6,
items: {1:'one'}
}
此外,我在本地有一个项目地图,
项目地图数据
{
1:'one',
2:'two',
3:'three',
4:'four'
}
假设我需要插入{5: 'five'}
,我需要插入5
来自items
的两个或多个ITEM MAP DATA
。结果应该反映如下类似的东西,
项目数据结果
{
id:1,
items: {3:'three', 4:'four', 5'five'}
},
{
id:2,
items: {}
},
{
id:3,
items: {1:'one', 2:'two', 6:'six'}
},
{
id:4,
items: {1:'one', 2:'two', 'three', 5:'five'}
},
{
id:5,
items: {1:'one', 2:'two', 5:'five'}
},
{
id:6,
items: {1:'one'}
}
我是这个领域的新手,以下是我尝试实现这一目标,
var dataItemMap = {};
dataItemMap['1']='one';
dataItemMap['2']='two';
dataItemMap['3']='three';
dataItemMap['4']='four';
var setObj = {};
DbConnector.getMutProConnection(function(err,db) {
setObj['5'] = 'five';
db.collection('itemData').update({
"$where": "return Object.keys(this.items).length > 1"
}, {$set: setObj}, {multi: true});
});
我通过阅读这篇文章来提出上述代码:Mongodb Query based on number of fields in a record。但似乎没有工作,我不知道如何合并我的第二个查询。
如果专家能够为我提供能够达到我要求的代码片段,示例或参考资料,我将非常感激。
非常感谢:)
答案 0 :(得分:0)
由于MongoDB中没有连接,您必须设计模式以避免查找“项目映射”,否则您必须在程序的内存中检查它。 没有条件,查询可能如下所示。
db.item_data.update({ "$where": "return Object.keys(this.items).length > 1" }, {$set : {"items.5" : "five"}}, false, true)