Mongo DB:将字段更改为数组


Mongo DB: Change a field to array

假设我们有一个类似的文档

{
    "_id" : "1234",
    "Data" : {
         "Name" : "Pythagoras",
         "Like" : "Math"
}

我们改变了主意,想把更多的东西推到Data->Like,看起来像;

{
    "_id" : "1234",
    "Data" : {
         "Name" : "Pythagoras",
         "Like" : ["Math", "Science"]
}

所有原子运算符,如$push、$pushAll和$addToSet,在Data->like已经是数组的情况下都能工作。

我正在使用php驱动程序。在这个例子中,一开始不将Data->Like设置为数组是没有意义的,但它在我的代码中并不是这样工作的;(

希望你能帮助我,并为我糟糕的英语感到抱歉;)谢谢

您必须遍历所有文档并将值更改为数组。例如,您可以使用

$m=新Mongo();$c=$m->yourdbname->yourcollectionname;foreach($c->find()为$r){if(!is_array($r['Data']['Like'])){$c->update(数组('_id'=>$r['_id']),数组('$set'=>数组('data.like'=>数组($r['data']['like'])));}}