【发布时间】:2015-09-07 15:44:52
【问题描述】:
我在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'},我需要在ITEM MAP DATA 有两个或多个items 的地方插入5。结果应该反映如下类似的内容,
项目数据结果
{
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。但似乎没有用,我不知道如何合并我的第二个查询。
如果各位专家能给我提供代码 sn-ps、示例或参考资料,我将不胜感激。
非常感谢:)
【问题讨论】:
-
mongodb 不支持连接,因此必须单独检查项目数据是否存在于 item_map 中。如果您不具备签入 item_map 的条件,那么我们应该能够对此进行查询。
-
@anish 我为我的要求实现了一种静态解决方法,但它不是正确的方法。我还发现在这种情况下连接是不可能的,如果我们可以形成一个查询来实现这一点,那就太好了
标签: javascript mongodb mongodb-query