使用Mongo结果对象 - 与_id字段相关的问题
问题描述:
对于MongoDB来说,这很新颖,并且有一些小麻烦。在Mongo中,我从数据库中获得的每个对象都有特殊的_id
字段。这个字段当然需要唯一标识我的对象。使用Mongo结果对象 - 与_id字段相关的问题
现在在PHP中,我的对象以特殊的_id字段作为数组返回。
Array (
[_id] => MongoId Object (
[$id] => 547dc96b5c5db8a80f000029
)
[somekey] => somevalue
)
当编码到JSON,通过一些前端发送和再次解码回在PHP中,_id领域当然有投/销毁。
为了避免这种情况,我想我必须在从Mongo数据库获取_id字段后才能投出。
Array (
[_id] => 547dc96b5c5db8a80f000029
[somekey] => somevalue
)
现在它可以安全地编码和解码,但我想。
但是这个对象是否会在再次保存在MongoDB中时工作?即使在这种形式下,Mongo是否会使用_id字段作为Mongo ObjectId,还是需要相应地重新设置它?
有没有更好的方法呢?
更新 我只是试图用_id作为MongoId多次保存一个对象,并将它作为字符串_id。使用MongoId的对象是 而不是将具有相同_id的那些对象替换为字符串,请在此输入问题。
这将使我从数据库中获得的每个对象都需要它被_id手动转换,并且在从某个使用客户端的JSON接收到它之后,我必须再次将evrry _id重新转换为MongoId。 加载更大的对象列表时,这可能会造成严重的性能影响。
有没有更好的方法?
答
您应该更改字符串代表现场_id
回一个MongoId
对象:
$array['_id'] = new MongoId($array['_id']);
我不认为这会严重影响性能,最好对其进行测试。另一方面,您仍然可以为_id字段,整数或字符串创建自己的类型,它不必是一个对象。
更改字符串代表'_id'回到对象? '$ array ['_ id'] = new MongoId('547dc96b5c5db8a80f000029');' – 2014-12-02 15:17:29
@Glavić所以你认为我必须重新发送每个_id到MongoId对象,然后再发送到数据库? – ToBe 2014-12-02 15:18:15
最简单的方法是测试这个,但我认为如果'_id'呈现为字符串,它将替换mongodb中的对象。请尝试... – 2014-12-02 15:20:15