如何在mongodb中查询

时间:2013-03-22 11:38:18

标签: mongodb

数据:

[{        
                    "shop_ID" : "ABCD",
                    "plan" : 2,
                    "planType" : 2,
                    "goods_id" : "9612",
                    "category" : "1",
                    "keywords" : [
                        {
                            "keyword" : "lianyiqun",
                            "price" : 3.12,
                            "score" : 9
                        },
                        {
                            "keyword" : "nvzhuang",
                            "price" : 6.57,
                            "score" : 6
                        },
                        {
                            "keyword" : "chunzhuang",
                            "price" : 5.55,
                            "score" : 8
                        }
                    ]
                },
                {
                    "shop_ID" : "ABCD",
                    "plan" : 2,
                    "planType" : 2,
                    "goods_id" : "5078",
                    "category" : "1",
                    "keywords" : [
                        {
                            "keyword" : "lianyiqun",
                            "price" : 9.26,
                            "score" : 8
                        },
                        {
                            "keyword" : "nvzhuang",
                            "price" : 4.52,
                            "score" : 9
                        }
                    ]
                }]

我使用过命令查询:

db.test.find({" keywords":{$ elemMatch:{"得分":{" $ gte":8}}}}})

结果不对,它是所有文件。

然后,使用该命令 db.test.find({"关键字"得分":{" $ GTE":8}})

结果是一样的。

我希望第一个文档的查询结果如下:

{        
                        "shop_ID" : "ABCD",
                        "plan" : 2,
                        "planType" : 2,
                        "goods_id" : "9612",
                        "category" : "1",
                        "keywords" : [
                            {
                                "keyword" : "lianyiqun",
                                "price" : 3.12,
                                "score" : 9
                            },
                            {
                                "keyword" : "chunzhuang",
                                "price" : 5.55,
                                "score" : 8
                            }
                        ]
                    },

如何查询内部文件?

1 个答案:

答案 0 :(得分:0)

有一个$elemMatch投影运算符,它将从每个数组中返回符合条件的ONE元素:

db.test.find( { } , 
              { keywords: { $elemMatch: { score: { $gte: 8 } } } } 
            )

要使用得分> = 8返回子文档中的所有元素,可以使用aggregation framework

 db.test.aggregate ( [ { $unwind: "$keywords" },
                       { $match: { "keywords.score" : { $gte: 8 } } } 
                     ] )

此致