0

我正在使用 mongodb 2.4.6 版本。我的一个名为“mycollection”的收藏中有以下记录

{
        "_id" : ObjectId("524d3eb224bfcc31614ec8ef"),
        "symbol" : "JACK",
        "option_exp" : [
                {
                        "dateexpiration" : "2014-03-22",
                        "total_strikes" : 18,
                        "options" : [
                                {
                                        "pricevalue" : "22.5",
                                        "premium" : "100"
                                },
                                {
                                        "pricevalue" : "60.0",
                                        "premium" : "100"
                                }
                        ]
                },
                {
                        "dateexpiration" : "2014-03-22",
                        "total_strikes" : 30,
                        "options" : [
                                {
                                        "pricevalue" : "122.5",
                                        "premium" : "34"
                                },
                                {
                                        "pricevalue" : "60.0",
                                        "premium" : "100"
                                }
                        ]
                },
                {
                        "dateexpiration" : "2013-12-21",
                        "total_strikes" : 16,
                        "options" : [
                                {
                                        "pricevalue" : "20.0",
                                        "premium" : "100"
                                },
                                {
                                        "pricevalue" : "22.5",
                                        "premium" : "100"
                                }
                        ]
                }
        ]
}

我想检索所有记录到特定日期过期日期的记录。

我尝试了下面的方法,但它恢复了整个文档结构。

db.mycollection.find({ "symbol" : "JACK" ,"option_exp.dateexpiration" : "2014-03-22"}).pretty()

下面给了我错误 SyntaxError: Unexpected token 。

db.mycollection.find({ "symbol" : "JACK" ,"option_exp.dateexpiration" : "2014-03-22"},{option_exp.$:1}).pretty()
4

2 回答 2

1

尝试聚合功能,如下所示:

db.mycollection.aggregate([
    {$unwind: '$option_exp'}, 
    {$match: {'symbol': 'JACK', 'option_exp.dateexpiration':'2014-03-22'}}
])
于 2013-10-03T23:30:32.217 回答
0

尝试使用$elemMatch

db.collection.find({ option_exp: { $elemMatch: { dateexpiration: "2014-03-22" } } });
于 2013-10-03T10:38:48.423 回答