【问题标题】:The dollar ($) prefixed field '$divide' in is not valid for storage美元 ($) 前缀字段“$divide”对存储无效
【发布时间】:2018-03-10 01:03:35
【问题描述】:

我正在尝试通过计算其他两个字段来更新字段seconds_until_start。这似乎并没有以最直观的方式在 mongodb 中起作用。任何我能做的其他建议都表示赞赏。

db.price_scrape.update({"timestamp": {"$exists": true}},
  {"$set": {
      seconds_until_start: {$divide: [{$subtract: ["$marketstarttime", "$timestamp"]}, 1000]}
  }},
multi=true)

The dollar ($) prefixed field '$divide' in 'seconds_until_start.$divide' is not valid for storage.

【问题讨论】:

  • $divide 是一个聚合运算符,您不能在 update 中使用它。有关在更新中使用其他字段值的选项,请参阅 here
  • 它并没有真正回答您链接中的问题,因为它仅由其他两个字段组成一个新字段,但没有任何运算符
  • 简短的回答是它不受直接支持,因此您需要根据您的情况使用链接中的一种方法。

标签: mongodb


【解决方案1】:

检查您的 mongo 版本,如果不是 v4.2+,您的查询将不起作用。

正如评论中指定的@JohnnyHK (this link)

查看第一个答案,它可以深入了解如何在 Mongo DB 上以较低版本编写查询

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 2017-12-13
    • 2019-12-27
    • 2020-05-24
    • 1970-01-01
    相关资源
    最近更新 更多