Mongodb如何将特定对象从数组移动到另一个数组?

时间:2018-10-22 11:21:42

标签: node.js mongodb mongoose

假设我有以下收藏:

{  
  "_id":ObjectId("562e7c594c12942f08fe4192"),
  "first":[  
    {  
      "shape":"square",
      "color":"blue"
    },
    {  
      "shape":"circle",
      "color":"red"
    }
  ],
  "second": []
}

我想做的是,首先在first数组中找到一个特定的对象,然后将其移至second字段

db.collection.findOneAndUpdate({_id: ObjectId("562e7c594c12942f08fe4192")}, {$pull: {first: {color: "red"}}, $push: {// that specific object to second array}})

2 个答案:

答案 0 :(得分:2)

这不能通过单个操作完成。不过,您可以改为这样做:

MyModel.findOne({ _id: ObjectId("562e7c594c12942f08fe4192"), "first.color": "red" }, 'first.$', function (err, doc) {
    MyModel.findByIdAndUpdate(ObjectId("562e7c594c12942f08fe4192"), {
        $pull: { first: { color: "red" } },
        $push: { second: doc.first[0] }
    }, function (err, docs) {  })
});

答案 1 :(得分:0)

使用游标尝试此操作。

df['Qdate'] = df['Date'].dt.to_period("Q").dt.end_time

将“蓝色”替换为您选择的项目。

这将对您的示例有效,但是将在第二秒内删除所有先前的项目。

如果您只是想附加它,那应该可以。

.start_time