我使用的是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()
答案 0 :(得分:1)
尝试聚合功能,如下所示:
db.mycollection.aggregate([
{$unwind: '$option_exp'},
{$match: {'symbol': 'JACK', 'option_exp.dateexpiration':'2014-03-22'}}
])
答案 1 :(得分:0)
尝试使用$elemMatch
db.collection.find({ option_exp: { $elemMatch: { dateexpiration: "2014-03-22" } } });