从一组JSON对象获取与条件匹配的文档

时间:2015-03-06 03:42:03

标签: javascript mongodb mongodb-query

我有一组JSON对象,表示用户想要接收通知的销售,并且数组中的每个JSON对象都有一个itemName和一个maxPriceDesired字段。

我有一个单独的销售集合来通知用户,每个销售都有一个itemName,price和location字段。

我想要的是返回每个销售对象,当且仅当销售itemName位于用户要接收通知的项目列表中且销售价格小于或等于maxDesiredPrice时。我无法弄清楚如何查询,以便我得到这个。例如,假设用户为了自己的兴趣而拥有此JSON数组:

[
    { itemName: MacBook Pro, maxDesiredPrice: 1000.00}, 
    { itemName: iPhone 6, maxDesiredPrice: 800 }
] 

销售系列

[    
    { itemName: MacBook Pro, price: 1250.00 }, 
    { itemName: iPhone 6, price: 700.00 }
]

然后我想在查询中仅返回iPhone 6促销,因为用户已表示对该项目感兴趣(匹配itemName)且其价格低于最高期望价格。

1 个答案:

答案 0 :(得分:1)

因此,已经从"用户"进入user变量,其中的项目以" interest_in"表示。属性:

{
    "interested_in": [
        { "itemName": "MacBook Pro", "maxDesiredPrice": 1000.00 }, 
        { "itemName": "iPhone 6", "maxDesiredPrice": 800 }
    ] 

}

然后,您将使用$or查询表达式中的信息进行一些修改,如下所示:

var interested = user.interested_in.map(function(item) {
    item.price = { "$lte": item.maxDesiredPrice };
    delete item.maxDesiredPrice;
    return item;
});

db.sales.find({ "$or": interested })

或者基本上是一些将键操作到所需形式的过程,以您实际使用的任何语言发出查询。原则保持不变。