Iva*_*van 5 mongodb mongodb-query
例如,如果我有一些传感器并且它们具有唯一的 SN。
然后,我有一些这种格式的历史数据(未排序): (SN, timestamp, value)
我想在 MongoDB 中维护传感器的最新状态。{"sn":xxx, "timestamp": xxx, "value": xxx, "installed_time": xxx}. 安装时间可能会在以后手动添加。
所以目前,我的代码就像
if db.sensors.find_one({"sn":SN, "timestamp": {"$lt": timestamp}}):
db.sensors.update_one({"sn":SN}, {"$set":{"timestamp": timestamp, "value": value}}, {"upsert": True})
Run Code Online (Sandbox Code Playgroud)
我想知道我是否可以将这些合并为一个操作。
我试图做有条件的 upsert
db.sensors.update_one({"sn":SN, "timestamp": {"$lt": timestamp}}, {"$set":{"timestamp": timestamp, "value": value}}, {"upsert": True})。问题是我将拥有多个具有相同 SN 的文档。
例如,让我们从空集合开始。首先,(1, 3, 1)被处理,{"sn": 1, "timestamp":3, "value": 1}被插入。然后,处理(1, 1, 2),它将创建另一个文档{"sn": 1, "timestamp":1, "value": 2}。预期行为只是忽略此数据点。
我也尝试做文档替换db.sensors.update_one({"sn":SN, "timestamp": {"$lt": timestamp}}, {"sn": SN, "timestamp": timestamp, "value": value}, {"upsert": True})。这将覆盖其他一些字段,例如installed_time.
| 归档时间: |
|
| 查看次数: |
335 次 |
| 最近记录: |