如何从mongodb中的同一集合查询大于不同文档中的值?

纳菲·潘莎(Nafi Pantha)

我有以下销售收藏。我想使用mongo shell查询以查找价格超过20的产品详细信息。

[{
  "Customer_Info":{
        "Customer_Id": 1,
      "First_Name": "John",
      "Last_Name": "Smith",
      "Address": "Sydney",
      "State": "Sydney",
      "Postcode": "0920",
      "Phone": "0143464663"
  },
  "Order_Info": [
    {
      "Order_Id": 1,
      "Order_Date": "01-01-2020",
      "Delivery_Date": "01-01-2020",
      "Line_Info": [
        {
          "Line_Id": 1,
          "Line_Price": 100,
          "Line_Units_Added": 2,
          "Product_Info": {
            "Product_Id": 300,
            "Product_Name": "Orange",
            "Product_Description": "Fruit",
            "Number_in_Stock": 50,
            "Product_Weight": 1,
            "Product_Cost": 300,
            "Product_in_Date": "01-01-2020",
            "Product_Type": "Fruits",
            "Farmer_Info": {
              "Farmer_Id": 123,
              "Farmer_First_Name": "Drake",
              "Farmer_Last_Name": "Levine",
              "Farmer_Address": "Sydney",
              "Farmer_State": "Sydney",
              "Farmer_Post_Code": "1200"
            }
          }
        },
        {
          "Line_Id": 5,
          "Line_Price": 25,
          "Line_Units_Added": "1",
          "Product_Info": {
            "Product_Id": 305,
            "Product_Name": "Banana",
            "Product_Description": "Fruit",
            "Number_in_Stock": 100,
            "Product_Weight": 1,
            "Product_Cost": 100,
            "Product_in_Date": "01-01-2020",
            "Product_Type": "Fruits",
            "Farmer_Info": {
              "Farmer_Id": 123,
              "Farmer_First_Name": "Drake",
              "Farmer_Last_Name": "Levine",
              "Farmer_Address": "Sydney",
              "Farmer_State": "Sydney",
              "Farmer_Post_Code": "1200"
            }
          }
        },
        {
          "Line_Id": 6,
          "Line_Price": 100,
          "Line_Units_Added": "1",
          "Product_Info": {
            "Product_Id": 305,
            "Product_Name": "Jackfruit",
            "Product_Description": "Fruit",
            "Number_in_Stock": 20,
            "Product_Weight": 1,
            "Product_Cost": 50,
            "Product_in_Date": "01-01-2020",
            "Product_Type": "Fruits",
            "Farmer_Info": {
              "Farmer_Id": 123,
              "Farmer_First_Name": "Drake",
              "Farmer_Last_Name": "Levine",
              "Farmer_Address": "Sydney",
              "Farmer_State": "Sydney",
              "Farmer_Post_Code": "1200"
            }
          }
        },
        {
          "Line_Id": 7,
          "Line_Price": 200,
          "Line_Units_Added": 1,
          "Product_Info": {
            "Product_Id": 310,
            "Product_Name": "Dragon Fruit",
            "Product_Description": "Fruit",
            "Number_in_Stock": 10,
            "Product_Weight": 1,
            "Product_Cost": 2,
            "Product_in_Date": "01-01-2020",
            "Product_Type": "Fruits",
            "Farmer_Info": {
              "Farmer_Id": 123,
              "Farmer_First_Name": "Drake",
              "Farmer_Last_Name": "Levine",
              "Farmer_Address": "Sydney",
              "Farmer_State": "Sydney",
              "Farmer_Post_Code": "1200"
            }
          }
        }
      ]
    },
    {
      "Order_Id": 2,
      "Order_Date": "01-01-2020",
      "Delivery_Date": "01-01-2020",
      "Line_Info": [
        {
          "Line_Id": 2,
          "Line_Price": 200,
          "Line_Units_Added": 2,
          "Product_Info": {
            "Product_Id": 301,
            "Product_Name": "Mango",
            "Product_Description": "Fruit",
            "Number_in_Stock": 50,
            "Product_Weight": 1,
            "Product_Cost": 500,
            "Product_in_Date": "01-01-2020",
            "Product_Type": "Fruits",
            "Farmer_Info": {
              "Farmer_Id": 123,
              "Farmer_First_Name": "Drake",
              "Farmer_Last_Name": "Levine",
              "Farmer_Address": "Sydney",
              "Farmer_State": "Sydney",
              "Farmer_Post_Code": "1200"
            }
          }
        }
      ]
    }
  ]
},{
  "Customer_Info":{
  "Customer_Id": 2,
  "First_Name": "Popeye",
  "Last_Name": "Sailorman",
  "Address": "Sydney",
  "State": "Sydney",
  "Postcode": "0920",
  "Phone": "123456"},
  "Order_Info": [
    {
      "Order_Id": 3,
      "Order_Date": "01-01-2020",
      "Delivery_Date": "01-01-2020",
      "Line_Info": [
        {
          "Line_Id": 3,
          "Line_Price": 50,
          "Line_Units_Added": 5,
          "Product_Info": {
            "Product_Id": 500,
            "Product_Name": "Spinach",
            "Product_Description": "Vegetables",
            "Number_in_Stock": 30,
            "Product_Weight": 1.5,
            "Product_Cost": 30,
            "Product_in_Date": "01-01-2020",
            "Product_Type": "Veg",
            "Farmer_Info": {
              "Farmer_Id": "420",
              "Farmer_First_Name": "Olive",
              "Farmer_Last_Name": "Lewine",
              "Farmer_Address": "Sydney",
              "Farmer_State": "Sydney",
              "Farmer_Post_Code": "1200"
            }
          }
        }
      ]
    }
  ]
}]

想要使用mongo shell查找大于20的那些产品名称和产品成本。我做了如下:

db.sales.find( { "Order_Info.Line_Info.Product_Info.Product_Cost": { $gt: 20} }, {"_id": 0, 
    "Order_Info.Line_Info.Product_Info.Product_Name": 1, 
    "Order_Info.Line_Info.Product_Info.Product_Cost": 1} ).pretty();

但不幸的是,它仅返回第一个文档值。如何实现呢?

当然

您可以通过聚合来实现

  1. $map 有助于处理数组中的每个元素
  2. $filter 帮助使用条件和过滤器

Mongo脚本

[
  {
    $project: {
      Order_Info: {
        $map: {
          input: "$Order_Info",
          in: {
            $filter: {
              input: "$$this.Line_Info",
              cond: {
                $gt: [
                  "$$this.Product_Info.Product_Cost",
                  30
                ]
              }
            }
          }
        }
      }
    }
  }
]

工作蒙戈游乐场

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MongoDb聚合框架,连接不同文档位于同一集合中

来自分类Dev

如何比较同一集合中的文档?

来自分类Dev

如何根据同一集合中特定文档的值计算所有文档中的字段?

来自分类Dev

在MongoDB中合并同一集合中的两个文档

来自分类Dev

MongoDB索引,用于限制同一集合中每个用户的文档数

来自分类Dev

MongoDB获得唯一的文档,需要与同一集合中的其他文档进行比较

来自分类Dev

如何使用Morphia在同一集合中查找不同的实体

来自分类Dev

是否可以在MongoDB的aggregate()函数中包含同一集合中的其他文档?

来自分类Dev

Mongo DB不在查询中,因为有来自同一集合的两个文档子集

来自分类Dev

同一集合中的重复mongo记录

来自分类Dev

同一集合中的重复mongo记录

来自分类Dev

同一集合中的spring数据mongodb多个实体

来自分类Dev

如何在同一查询中从当前集合中获取对象数组以及另一集合中的数据

来自分类Dev

MongoDB计算现有字段中的分数并将其放入同一集合中的新字段中

来自分类Dev

无法在同一集合中添加第二个对象 - Spring MVC、MongoDB

来自分类Dev

如何发布具有不同数据子集的同一集合?

来自分类Dev

Python,集合,比较同一集合中的两个元素

来自分类Dev

MongoDB:如何“合并所有”来自同一集合的结果?

来自分类Dev

Symfony2 / Doctrine:如何在同一集合中添加更多相同实体?

来自分类Dev

Symfony2 / Doctrine:如何在同一集合中添加更多相同实体?

来自分类常见问题

根据Scala中的条件从同一集合的元素创建一个Map

来自分类Dev

根据Scala中的条件从同一集合的元素创建一个Map

来自分类Dev

如何聚合来自 MongoDB 中不同文档的数组值?

来自分类Dev

如何仅返回流星集合中的唯一集合字段?

来自分类Dev

MongoDB:如何将一个模式用作不同文件中定义的不同集合的子文档

来自分类Dev

骨干-对同一集合使用不同的视图或模板

来自分类Dev

骨干-对同一集合使用不同的视图或模板

来自分类常见问题

根据不同文档中同一字段的不同值进行过滤

来自分类Dev

根据不同文档中同一字段的不同值进行过滤

Related 相关文章

  1. 1

    MongoDb聚合框架,连接不同文档位于同一集合中

  2. 2

    如何比较同一集合中的文档?

  3. 3

    如何根据同一集合中特定文档的值计算所有文档中的字段?

  4. 4

    在MongoDB中合并同一集合中的两个文档

  5. 5

    MongoDB索引,用于限制同一集合中每个用户的文档数

  6. 6

    MongoDB获得唯一的文档,需要与同一集合中的其他文档进行比较

  7. 7

    如何使用Morphia在同一集合中查找不同的实体

  8. 8

    是否可以在MongoDB的aggregate()函数中包含同一集合中的其他文档?

  9. 9

    Mongo DB不在查询中,因为有来自同一集合的两个文档子集

  10. 10

    同一集合中的重复mongo记录

  11. 11

    同一集合中的重复mongo记录

  12. 12

    同一集合中的spring数据mongodb多个实体

  13. 13

    如何在同一查询中从当前集合中获取对象数组以及另一集合中的数据

  14. 14

    MongoDB计算现有字段中的分数并将其放入同一集合中的新字段中

  15. 15

    无法在同一集合中添加第二个对象 - Spring MVC、MongoDB

  16. 16

    如何发布具有不同数据子集的同一集合?

  17. 17

    Python,集合,比较同一集合中的两个元素

  18. 18

    MongoDB:如何“合并所有”来自同一集合的结果?

  19. 19

    Symfony2 / Doctrine:如何在同一集合中添加更多相同实体?

  20. 20

    Symfony2 / Doctrine:如何在同一集合中添加更多相同实体?

  21. 21

    根据Scala中的条件从同一集合的元素创建一个Map

  22. 22

    根据Scala中的条件从同一集合的元素创建一个Map

  23. 23

    如何聚合来自 MongoDB 中不同文档的数组值?

  24. 24

    如何仅返回流星集合中的唯一集合字段?

  25. 25

    MongoDB:如何将一个模式用作不同文件中定义的不同集合的子文档

  26. 26

    骨干-对同一集合使用不同的视图或模板

  27. 27

    骨干-对同一集合使用不同的视图或模板

  28. 28

    根据不同文档中同一字段的不同值进行过滤

  29. 29

    根据不同文档中同一字段的不同值进行过滤

热门标签

归档