【问题标题】:MongoDB Finding nested object valueMongoDB查找嵌套对象值
【发布时间】:2019-01-08 00:27:56
【问题描述】:

我正在尝试在我的集合中查找数值大于 x 数量的文档。该文档解释了如何为顶级值执行此操作,但是我正在努力为子对象中的值检索正确的数据。

示例 JSON

{ "_id" : ObjectId("5c32646c9f3315c3e8300673"), "key" : "20190107", "__v" : 0, "chart" : [ { "_id" : ObjectId("5c3372e5c35e924984f28e03"), "volume" : "0", "close" : "47.24", "time" : "09:30 AM" }, { "_id" : ObjectId("5c3372e5c35e924984f28d34"), "volume" : "50", "close" : "44.24", "time" : "09:50 AM" } ] }

我想检索大于 10 的卷。我试过了

db.symbols.find({"chart.volume": { $gt: 10 } } )

db.symbols.find({"volume": { $gt: 10 } } )

任何帮助表示赞赏。

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    您的示例 JSON 包含 chart.volume 字段的字符串值。如果它是数字,那么你的第一个解决方案:

    db.symbols.find({"chart.volume": { $gt: 10 } } )

    可以正常工作。 docs 会解释如何做到这一点。

    【讨论】:

    • 啊当然!谢谢你。我不认为有一种方法可以轻松地将所有值递归更改为数字,而无需重新抓取/导入它们?
    • 有。你可以这样做db.symbols.find().forEach( function (e) { e.chart = e.chart.map(c => { c.volume = parseInt(c.volume); return c; }); db.symbols.save(e); } )。请参考以下答案:thisthis
    猜你喜欢
    • 2016-03-05
    • 2016-12-19
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 2017-01-09
    • 1970-01-01
    相关资源
    最近更新 更多