如何在MongoDB中从内部数组中选择/查找数据?

时间:2015-07-18 17:47:02

标签: mongodb mongodb-query

如何为日期2013-01-14提取(查找)标签?

  db.test1.insert(
    {
    date: Date("2013-01-14"),
    name: "Roma",
    tags: [{Python:14,Ruby:10,C:4}]
    }
    )

我尝试提取当前日期的所有信息,但即使这个请求也不起作用: db.test1.find({date:Date("2013-01-14")})

1 个答案:

答案 0 :(得分:1)

mongo shell使用ISODate帮助程序包装Date类型的对象,但对象仍为 Date 类型。因此,在MongDB中插入日期时,您可以使用 ISODate() 构造函数,它使用 ISODate() 包装器而不是 Date() 方法返回Date对象将当前日期作为字符串返回。

查询时,使用新的 Date() 构造函数,该构造函数使用ISODate()包装器返回Date对象,以获取可在查询中使用的日期对象,请注意,JavaScript日期对象月份是从零开始的索引,因此1月在构造函数参数中具有值0。

<强>插入

db.test1.insert({
    "date": ISODate("2013-01-14"),
    "name": "Roma",
    "tags": [
        { "Python": 14, "Ruby": 10, "C": 4 }
     ]
})

<强>查询

var myDateObj = new Date(2013, 0, 14) // JavaScript Date object months are zero based index
db.test1.find({ "date": myDateObj }, {"_id": 0, "tags": 1})

<强>结果

/* 0 */
{
    "tags" : [ 
        {
            "Python" : 14,
            "Ruby" : 10,
            "C" : 4
        }
    ]
}
相关问题