更新文档并创建一个字段,该字段是集合MongoDB中具有相同ID的所有对象的数组

阿图尔·布拉加(ArturBraga)

我有一个mongo集合,其文档组织如下:

{
        "_id" : ObjectId("5ea084718a475ee5faaaf3b7"),
        "vehicleid" : 32040,
        "date" : ISODate("2018-02-01T00:00:00Z"),
        "points" : {
                "direction" : 135,
                "latitude" : -3.744851,
                "longitude" : -38.545571,
                "odometer" : 55697826,
                "routecode" : 0,
                "speed" : 3,
                "deviceid" : 134680,
                "metrictimestamp" : ISODate("2018-02-01T02:59:59Z")
        }
}
{
        "_id" : ObjectId("5ea084718a475ee5faaaf3b8"),
        "vehicleid" : 32040,
        "date" : ISODate("2018-02-01T00:00:00Z"),
        "points" : {
                "direction" : 270,
                "latitude" : -3.840556,
                "longitude" : -38.4954,
                "odometer" : 24358799,
                "routecode" : 0,
                "speed" : 0,
                "deviceid" : 97878,
                "metrictimestamp" : ISODate("2018-02-01T02:59:19Z")
        }
}

我需要一种通过创建新的“点”字段来更新集合的方法,该字段将是具有相同“车辆标识”和“日期”的所有文档中所有“点”对象的数组,例如:

{
            "_id" : ObjectId("5ea084718a475ee5faaaf3b8"),
            "vehicleid" : 32040,
            "date" : ISODate("2018-02-01T00:00:00Z"),
            "points" : [{
                    "direction" : 270,
                    "latitude" : -3.840556,
                    "longitude" : -38.4954,
                    "odometer" : 24358799,
                    "routecode" : 0,
                    "speed" : 0,
                    "deviceid" : 97878,
                    "metrictimestamp" : ISODate("2018-02-01T02:59:19Z")
            },
                   {
                    "direction" : 135,
                    "latitude" : -3.744851,
                    "longitude" : -38.545571,
                    "odometer" : 55697826,
                    "routecode" : 0,
                    "speed" : 3,
                    "deviceid" : 134680,
                    "metrictimestamp" : ISODate("2018-02-01T02:59:59Z")
                                                                        }]
    }

有任何想法吗???

维杰(Vijay Rajpurohit)

是的,您可以$out在MongoDB中使用

这是相同的shell查询:

如果要更新同一集合,我将第二个集合的名称保持不同,可以将集合的名称保持不变。

NOTE $out将用集合的输出替换集合中已经存在的所有文档,直到最后一个阶段。因此,您最好谨慎处理。

db.first_collection.aggregate([
  {
    $project:{
      "_id":0
    }
  },
  {
    $group:{
      "_id":{
        "vehicleid":"$vehicleid",
        "date":"$date"
      },
      "date":{
        $first:"$date"
      },
      "vehicleid":{
        $first:"$vehicleid"
      },
      "points":{
        $push:"$points"
      }
    }
  },
  {
    $project:{
      "_id":0
    }
  },
  {
    $out:"second_collection"
  }
])

有关更多信息,$out在这里阅读

希望这会有所帮助:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Firestore中使用POJO更新所有文档中的一个字段?

MongoDB:如何为集合中的每个文档设置一个新字段,该字段等于另一个字段的值

猫鼬findByIdAndUpdate仅更新文档中的一个字段

Django的。创建一个字段,该字段是相关模型中现有字段的副本。

所有集合中一个字段的MongoDB视图

Mongodb $ project:排除子文档中除一个字段外的所有字段,其余保留

获取一个字段的最大值,但仅针对另一个字段中具有相同值的其他文档

如何计算具有相同值的文档数,并使用mongoDB中的另一个字段将它们分组?

在Cloud Firestore中创建另一个字段时,如何更新文档中的字段?

具有一个字段的最新值并保留其他字段的MongoDB查询文档

Mongo和Yii->在子文档的所有数组中使用$ set更新一个字段

通过投影从嵌套文档中删除除一个字段外的所有字段

在Solr中,如何获取所有文档的一个字段列表(文档ID)?

将具有一个字段(对象类型)的Json对象转换为对象的json数组

Ruby on Rails,使用activerecord获取具有指定字段的所有记录,这些字段在我的数组中包含一个字符串

DynamoDB 更新一个字段,该字段具有 JSON 作为值,整数/数字字符串作为 python 中的键

我希望所有唯一的数组值都集中在 mongodb 的一个字段中

Mongodb 比较使用一个字段与对象数组中的另一个字段

如何从所有集合中删除一个字段?

在 React 中创建一个字段或所有字段

MongoDB 使用另一个集合中的另一个字段更新字段

更新 MongoDB 文档数组字段中的所有对象

如何有条件地从 MongoDB 中的对象数组中删除一个字段?

从 mongoDB 集合中删除一个字段

mongodb在从另一个字段派生的所有文档中添加字段

在 MongoDB 中,有一个对象列表,通过查询同一对象的另一个字段的值,根据对象的一个字段的值对所有文档进行排序

Mongodb 更新文档中的一个字段,然后根据前一个字段的值更新另一个

查询在 MongoDb 集合中的所有文档中创建一个新字段

如何从数组数组中提取在第一个字段中具有相同值的所有数组?