我们正尝试将房地产属性搜索从SQL Server移植到MongoDB。每个属性可以有多个列表,我们将其作为子数组直接存储在每个记录中,如下所示:
{
"propertyId": 18023335652,
"latitude": 33.67654,
"longitude": -117.790335,
"listings": [{
"orgId": "",
"listingId": "",
"offMarketDate": "2001-07-06T00:00:00",
"soldPrice": 273000,
"bedrooms": 3,
"bathrooms": 3,
"livingAreaInSqFt": 1653,
"yearBuilt": 1980,
"rank": 3
},
{
"orgId": "caclaw-n",
"listingId": "11234029",
"offMarketDate": "2015-02-12T00:00:00",
"soldPrice": 325000,
"bedrooms": 4,
"bathrooms": 3,
"livingAreaInSqFt": 1646,
"yearBuilt": 1980,
"rank": 2
}
]
}
}
当将属性/列表导入MongoDB时,我们具有确定每个列表“排名”的业务逻辑,因此我们知道哪个是“首选”列表,并且应将给定属性显示给特定用户。这并不像在每个列表上设置“ isPreferred”值或使用Rank = 1的列表那样简单,因为执行属性搜索的用户可能无法访问某些列表(它们位于不同的MLS中)。我想编写一个执行以下操作的MongoDB查询:
我将如何在MongoDB中做到这一点?