假设我们有一个类似的文档
{
"_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'])));}}