当前位置: 首页 > 面试题库 >

MongoDB:查询结果匹配数组中的任何值

祁均
2023-03-14
问题内容

我有一些文件:

{

    "storeID" : "715R",
    "sensorID" : [ 
        "0BBA", 
        "0BB9"
    ]
}
{

    "storeID" : "312R",
    "sensorID" : [  
        "0BBB"
    ]
}

我想要得到的结果sensorID,其sotreID匹配的任何值storeIDarray一样['715R','312R','789R']

在这种情况下,我想得到结果:一个sensorID数组: [ "0BBA", "0BB9","0BBB"]

我该怎么办?谢谢。


问题答案:

您应该看一下$inMongoDB
中的运算符。然后将它与find一起使用,以使您的请求更快,可以使用lean方法:使用它,mongoDB将返回JS对象而不是Mongoose模型/对象。

YourModel.find({storeID: {$in: storeIDarray }}).lean().exec(yourCallback);

然后,您可以reduce在结果数组上使用方法:

yourResult.reduce((acc, el) => acc.concat(el.sensorID), []);

希望对您有帮助,
最好的问候



 类似资料:
  • 所以我对大约500k文档有以下查询,它在数据库端非常慢: 我知道allowDiskUse使它变慢,但如果禁用它,我会得到: MongoError:超过$group的内存限制,但不允许外部排序。通过允许磁盘使用:真来选择加入。

  • 我在使用MongoDB查询时遇到问题。每当我尝试通过ID或任何其他字段查找时,我总是得到零结果返回。我也很难使用“like”操作符。 我想以不区分大小写的方式查询书名。而且我知道你可以在MongoDB中这样做: 我试着装腔作势地做,但我不能让它起作用: 我看到控制台上打印出以下行:{“title”:{“$regex”:“/^harr.*/I”}} 我也尝试过一个文档,但也不成功: 结果却是零。 这

  • 我使用Twittertypeahead.js搜索名单的名字和客户端希望根据名字的建议。 有没有一个选项可以让Twittertypeahead.js搜索查询与每个结果的开头相匹配,而不是字符串中的任何位置? 我可以在函数中看到一个变量,但是我不知道如何将其指定为一个选项,甚至不知道这是否与我试图实现的目标有关。 在我的项目中调用typeahead的jQuery函数是: 我可以看到来自的响应格式 所以

  • 我在Firestore中收集了一组文档,其中有一个字段是字符串数组,这些是添加到数据中的标记。 用户可以通过在前端选择和取消选择这些标签来过滤数据,所以我正在做一个数组来查询Firestore。 然后,我在最佳匹配上对结果进行评分,因此匹配更多标签的文档被排序到顶部,并显示到页面顶部供用户使用。 我现在正试图用带有文档快照的startAfter作为光标和限制,对这些数据进行分页。但我需要确保,当限

  • 我和同事们有如下计划 所以我们想要的是所有在特定labID范围内匹配的文档,结果输出中只有在数组(“userlevels”)中匹配的字段。 比方说,如果我们想要集合中所有匹配的文档,范围在$gt 100到LT 200之间,那么应该有以下所需的输出。 我试过的 它会回复与lab_id(100到200)范围内的文档匹配的所有文档,但会在用户级别回复lab_id。

  • 问题内容: 假设我的MySQL DB中的表包含大量条目。 我需要遍历所有用户,但是我想一次仅执行大块操作(即使用和): 是否有可能知道查询中匹配的用户总数,但仅返回LIMIT个用户? 换句话说,是否可以在不进行单独查询的情况下提前知道用户总数? 问题答案: 您可以使用和在(几乎)一个查询中进行操作: 尽管您仍然有两个结果集,但实际查询仅执行一次,从而避免了重复编码和可能浪费的CPU周期。