我对 MongoDB 和 Lithium 都是新手,我真的找不到处理嵌套文档的“好方法”。我注意到当我尝试
$user = Users::find('first' ... );
$user->somenewfield = array('key' => 'val');
我为“somenewfield”得到的是一个 Document 对象。但是还有一个 DocumentArray 类——它们之间有什么区别?
当我打电话
$user->save();
这导致Mongo(如预期的那样):
"somenewfield" : {
"key": "value"
}
好的,但是当我以后想向数组添加一个新的键值并尝试时
$user->somenewfield['newkey'] = 'newval';
var_dump($user->somenewfield->to('array')); // shows the old and the new key-value pairs
$user->save(); // does not work - the new pair is not added
使用锂向文档添加新数组的正确方法是什么?更新数组/向数组添加新值的正确方法是什么?我应该给数组值一个键吗?
我在这里先向您的帮助表示感谢。我有点卡住了......阅读文档,阅读代码......但在某些时候很难单独找出所有内容:)
编辑:最后我发现我使用嵌套数组的方式是使用 $push 和 $pull:
Users::update(array('$push' => array('games' => (string) $game->_id)),
array(
'_id' => $this->user()->_id,
'games' => array('$ne' => (string) $game->_id)),
array('atomic' => false));