当前位置: 首页 > 知识库问答 >
问题:

基于多个值查询数组的MongoDB嵌套数组

苏淇
2023-03-14
{
  'id' : 1,
  'properties':{
    'type': [[0.05, 'education'],[0.6, 'health'],[0.9, 'math']]
  }
},
{
  'id' : 1,
  'properties':{
    'type': [[0.05, 'education'],[0.01, 'health'],[0.9, 'math']]
  }
},

如何根据数组的嵌套数组中的两个值参数进行查询?目标是返回具有属性的第一个文档。type[0]>0.5属性。type[1]==“health”

尝试了以下查询但没有成功。

db.collection.find({'properties.type': {'$elemMatch':{'$elemMatch':{'$all': [{ "$gt": 0.5, "$lt": 1 },'health']}}}})

共有1个答案

田昊天
2023-03-14

这里请尝试一下,我使用$Unwind$ArrayElemat

db.collection.aggregate([
  {
    $unwind: "$properties.type"
  },
  {
    $match: {
      "$and": [
        {
          "$expr": {
            "$gt": [
              {
                $arrayElemAt: [
                  "$properties.type",
                  0
                ]
              },
              0.5
            ]
          }
        },
        {
          "$expr": {
            "$eq": [
              {
                $arrayElemAt: [
                  "$properties.type",
                  1
                ]
              },
              "health"
            ]
          }
        }
      ],
      
    }
  },
  {
    $limit: 1
  }
])
 类似资料:
  • 我问了这个问题作为对另一个问题的评论,也在mongodb-user上发布了一个问题。到目前为止没有回复,所以我求助于问一个单独的问题。 文件说明: 如果字段包含一个数组,则$in操作符选择其字段包含数组的文档,该数组至少包含一个与指定数组中的值匹配的元素(例如,等等) 我正在使用: 在MongoDB外壳中: 下面是应根据文档及其生成的结果工作的查询列表: 为什么这个不行? 为什么我需要所有的钱?

  • ` ` 我需要使用MongoDB shell命令查询此文档。 我已经尝试过查看$[]、$all和挖掘mongo文档,但似乎都没用。任何想法都是赞赏,谢谢!

  • 我需要有关嵌套对象数组的查询优化的帮助。 我们有大量文档的集合,每个文档都包含嵌套的对象数组,最高可达3rd级,如下所示: 集合名称:产品 收集文件总数:2000万 每个文档的大小: 我为我的产品集合添加了以下索引,如下所示:, > products.id索引 { “id”:1 } 嵌套数组文档的索引 { " products . sellers . seller _ id ":1 } 我的疑问:

  • 问题内容: 我对mongodb还是很陌生,有一件事我现在无法解决: 假设您有以下文档(简体): 哪个查询将返回json-object,其值等于“ value2”? 这意味着,我需要这个json-object: 当然,我已经尝试了很多可能的查询,但是没有一个返回正确的查询,例如 有人可以帮我看看我在做什么错吗? 谢谢! 问题答案: 使用位置运算符 输出量 使用聚合 输出 使用Java驱动程序 输出

  • 我试图用C#在MongoDB中用嵌套数组文档实现文本搜索功能。我有一个以下格式的MongoDB集合。

  • 问题内容: 我在Spring中使用mongotemplate,我想知道如何自动原子地增加数组中的一个文档的值。想象我们有 我想要的是_id 341445从3到4的增量c 我一直在使用findAndModify,但是我不知道如何为数组中的嵌套文档创建它。 问候。 问题答案: 要更新数组字段中的元素,可以使用位置$运算符 例如,以下js将_id 341445的c从3递增到4: