使用PHP更新匹配的多个子文档

使用PHP更新匹配的多个子文档,php,mongodb,Php,Mongodb,我有一个照片文档,在这些照片上我有一些评论。每个子文档都作为评论员个人资料图片(当然,同一用户在一张照片上可能有多个评论员…) 当用户更新他们的配置文件图片时,我想更新每个图片的所有嵌套文档注释中的所有配置文件图片引用 顺便说一句,我正在使用PHP Mongodb驱动程序。 我试过这个: ...etc...updateMany( array("arrComments.userOID"=>$userID), array('$set'=>array('

我有一个照片文档,在这些照片上我有一些评论。每个子文档都作为评论员个人资料图片(当然,同一用户在一张照片上可能有多个评论员…)

当用户更新他们的配置文件图片时,我想更新每个图片的所有嵌套文档注释中的所有配置文件图片引用

顺便说一句,我正在使用PHP Mongodb驱动程序。 我试过这个:

    ...etc...updateMany(
      array("arrComments.userOID"=>$userID), 
       array('$set'=>array('arrComments.$.userProfileImage'=>$arrFileName))
      );

但这只会更新在每张图片中找到的第一条评论。。。我需要由一个用户对所有图像的所有评论进行更新

你为什么要先保存他们的个人资料照片。。。对我来说似乎是个糟糕的设计。。。很抱歉这么说。因为mongo是一个非关系型数据库系统,所以我将按照检索时需要的方式存储数据。这避免了我在查询中进行某种左连接,或者在以后进行单个查询以获取配置文件图片。我愿意多花一点时间来写和保存数据(这经常发生),以节省以后大量读取的时间)。不过,我欢迎你的想法。我的想法是,如果你必须以这种方式保存,并且不想以另一种方式保存,为什么不以一种可以用新图片覆盖的方式保存个人资料图片,那么你永远不必更改任何内容,当然我不知道你在保存什么,但似乎有一种更好的方法可以更新它的每个实例。我将图片保存在注释中,因为我会在注释旁边显示注释创建者的图片。现在,我可以用用户ID保存一个名为的图片文件,然后按ID加载配置文件图片,这意味着我不必更新数据库。。。但是,我也有用户的全名和他们的评论,所以当他们更新他们的个人资料时,全名也需要更新。和原来的问题一样,只是问题的另一个方面。保存图像数据,伙计,我曾经做过一个邮购新娘网站,他们有一个600GB的数据库。他们还将网页编译成HTML,这是个坏消息。。。。完全不可维护。