Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在MongoDb Compass查询内部对象集合中执行大于运算符_Arrays_Mongodb_Mongodb Query_Aggregation Framework - Fatal编程技术网

Arrays 如何在MongoDb Compass查询内部对象集合中执行大于运算符

Arrays 如何在MongoDb Compass查询内部对象集合中执行大于运算符,arrays,mongodb,mongodb-query,aggregation-framework,Arrays,Mongodb,Mongodb Query,Aggregation Framework,这是我在Mongo DB Compass中的Json。我只是在查询每个集合中超过评级的产品 注意:如果我使用pageCount,它可以正常工作,因为它不在集合中 {PageCount:{gte:2}}有效。 集合的内部数组集合出现问题,如果有人匹配它,则显示所有 当我们执行下面的查询时,如果索引中的任何一个大于99,它将显示所有值 {"ProductField.ProductDetailFields.ProductDetailInfo.ProductScore.Rating"

这是我在Mongo DB Compass中的Json。我只是在查询每个集合中超过评级的产品

注意:如果我使用pageCount,它可以正常工作,因为它不在集合中

{PageCount:{gte:2}}有效。

集合的内部数组集合出现问题,如果有人匹配它,则显示所有

当我们执行下面的查询时,如果索引中的任何一个大于99,它将显示所有值

{"ProductField.ProductDetailFields.ProductDetailInfo.ProductScore.Rating": {$exists:true,  $ne: null , $gte: 99}}
-----如果我执行上面的查询,我将得到这个输出

在MongoDB查询中如何进行类似于每种事物的迭代和检查条件

@Misky如何运行此查询执行:

在Mongo Shell中运行此查询时,没有sql客户端抛出以下错误。我们使用的是3.4.9
这与你的想法有点接近吗

db.collection.aggregate({
  $addFields: {
    "ProductField.ProductDetailFields": {
      $map: {
        "input": "$ProductField.ProductDetailFields",
        as: "pdf",
        in: {
          $filter: {
            input: {
              $map: {
                "input": "$$pdf.ProductDetailInfo",
                as: "e",
                in: {
                  $cond: [
                    {
                      $gte: [
                        "$$e.ProductScore.Rating",
                        99
                      ]
                    },
                    {
                      $mergeObjects: [
                        "$$e",
                        {
                          PageNumber: "$$pdf.PageNumber"
                        }
                      ]
                    },
                    null
                  ]
                }
              }
            },
            as: "i",
            cond: {
              $ne: [
                "$$i",
                null
              ]
            }
          }
        }
      }
    }
  }
},
{
  $addFields: {
    "ProductField.ProductDetailFields": {
      "$arrayElemAt": [
        "$ProductField.ProductDetailFields",
        0
      ]
    }
  }
})

您希望从您的帖子中的文档中得到什么结果?顺便说一下,{code>{“yourLongThing”:{$gte:99}这是足够的,因为任何大于99的数字都是空的,而不是空的xdSube将在多个文档中作为文档集合内的2个集合——每个文档产品DealDeliFielo数组都有一个产品评级,并且我需要基于RATIGN的过滤。如果你看到屏幕截图,我已经做了gte:99,但它显示以下值。如果不在嵌套集合gte中works@Minsky如果它按照您的要求工作,您可以将上面发布的json放入gte中,然后尝试使用gte,然后查看是的,它可以工作。谢谢您的时间。您知道如何在MongoDB compass或管道脚本中运行吗。ith抛出一个语法错误。如果解决了,请接受@MohamedSahir的答案。是的,工作很辛苦。我已经尝试在compass中添加了一些错误的语法。然后我尝试使用托管的mongodb NoSQL客户端,它有聚合下拉函数,在那里我删除了db.collection.aggregate({}});在下面的行中粘贴并执行查询。我在那个里添加了图片。你们能看看回复吗?这对我很有帮助。谢谢。我会在OT2上看一看,你能帮我用skype连接或免费聊天吗。sahir@gmail.com. 但我仍然面临着它不能在NoSQL客户机中运行的问题-,thttps://www.nosqlclient.com/demo/ 否则,你可以创建一个收集在该客户端,使可行的,也为我罚款。
db.collection.aggregate({
  $addFields: {
    "ProductField.ProductDetailFields": {
      $map: {
        "input": "$ProductField.ProductDetailFields",
        as: "pdf",
        in: {
          $filter: {
            input: {
              $map: {
                "input": "$$pdf.ProductDetailInfo",
                as: "e",
                in: {
                  $cond: [
                    {
                      $gte: [
                        "$$e.ProductScore.Rating",
                        99
                      ]
                    },
                    {
                      $mergeObjects: [
                        "$$e",
                        {
                          PageNumber: "$$pdf.PageNumber"
                        }
                      ]
                    },
                    null
                  ]
                }
              }
            },
            as: "i",
            cond: {
              $ne: [
                "$$i",
                null
              ]
            }
          }
        }
      }
    }
  }
},
{
  $addFields: {
    "ProductField.ProductDetailFields": {
      "$arrayElemAt": [
        "$ProductField.ProductDetailFields",
        0
      ]
    }
  }
})