Javascript Mongodb查询以从最终结果中删除时间戳小于1秒的冗余字段
我拥有的收藏的名称Javascript Mongodb查询以从最终结果中删除时间戳小于1秒的冗余字段,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我拥有的收藏的名称 1)设备: _id、设备id(字符串)、设备信息、公司id(字符串) 2)手机: _id、companyId(字符串)、tagId(字符串)、mobileInfo 3)跟踪: _id、DeviceID(字符串)、TagID(字符串)、trackInfo、时间戳(以毫秒为单位) 我需要建立一个查询来获取给定公司ID的所有跟踪数据(包括移动数据和设备数据)。每家公司都有: 一个或多个具有不同tagId的移动数据 具有deviceId的一个或多个设备数据 由TagID和Device
1)设备: _id、设备id(字符串)、设备信息、公司id(字符串) 2)手机: _id、companyId(字符串)、tagId(字符串)、mobileInfo 3)跟踪: _id、DeviceID(字符串)、TagID(字符串)、trackInfo、时间戳(以毫秒为单位) 我需要建立一个查询来获取给定公司ID的所有跟踪数据(包括移动数据和设备数据)。每家公司都有:
要应用于查询的条件:
跟踪集合可以有每秒的文档,在某些情况下,所有字段都是相同的(除了时间戳相差1秒)。我不希望那些看起来多余的文档实现这一点 我们可以使用以下条件:如果最终结果的相邻行相同,无论它们的时间戳差异是否小于1秒,然后其中一行不应该出现在最终结果上。我有一个工作查询,它将返回带有上述字段的文档,但对于冗余行为,我在对查询返回的文档应用“循环”查询后进行了检查,如下所示。现在,我需要在查询本身上实现以下逻辑。
注意:跟踪集合有数百万个文档,因此请注意可能影响性能的查询
//grid是mongodb使用query返回的文档数组。
对于(var k=1;kPlease,您可以共享当前的查询吗?生成循环中使用的结果的查询。@OTZ首先我查询移动集合以获取与给定公司ID匹配的移动文档。例如:mobile.find({companyId:givenOne})。查询设备集合以获取与给定公司ID.device.find匹配的设备文档({companyId:givenOne})。最后,我查询跟踪集合以获取TagID位于移动文档中的文档TagID和设备文档DeviceID.tracking.find({TagID:{$in:mobileDocsTagId},DeviceID:{$in:deviceDocsTagId}).对于最终结果的字段,我使用了另一个循环在trackingDocs上添加mobileInfo、deviceInfo。由于文档数量很大,我最终使用了多个查询,就像使用查找一样,db花了5分钟多的时间才给出响应。