我们有一个复杂的查询正在尝试解决(我们知道它的复杂xD)
我们有一系列文件,其中包含有关财产的一般信息。每个属性都有一个定价字段,其中包含一个对象数组,我们在其中存储对属性的任何价格更改。定价对象共有三种,
基本上,我们想要做的是获得当前正在出售但价格已经降低的房地产的输出。
我们不确定如何实现这一目标。我们认为,我们将必须将“类型”设置为“更改”的对象进行比较,并将价格与具有“列出”类型的对象进行比较,因为所列价格为原始过帐价格,因此从技术上讲,低于此价格的任何减少被认为是降价。
但是,如果我们具有以下条件:
在这种情况下,我们如何分辨价格变化为€1,000?我们应该比较索引[2]和[3]而不是比较列出的项目吗?
我们试图保留最近的已知价格记录,但这带来了问题,主要是因为我们存储了4亿多个地址。
让聚合= AddressModel.aggregate(); Aggregate.unwind(“ _ listings”);
// Listing status
let listingsMatch = {
"_listings.listing_status": "for_sale",
"_listings.pricing.type": "change"
};
aggregate.match(listingsMatch);
aggregate.group({
"_id": "$_id",
"full_address": { "$first": "$fullAddress" },
"pricing": { "$first": "$_listings.pricing" },
});
aggregate.sort({
"renewed_date": -1
});
输出应仅是具有“ for_sale”状态且已降价的地址。