1

在我的称为像素的 mongo 集合中,我有类似示例的文档,我正在寻找一种在文档的 actions.tags 部分中搜索的方法?

db.pixelsactifs.actions.find({tags:{$in : ["Environnement"]}})
db.pixelsactifs.find({actions.tags:{$in : {Environnement}})

不起作用。我也在寻找 PHP 等价物?

我也在问自己是否应该制作一个“动作”集合,而不是将所有内容都放在一个文档中

感谢您的洞察力

{
  "_id": { $oid": "51b98009e4b075a9690bbc71" },
  "name": "open Atlas",
  "manager": "Tib Kat",
  "type": "Association",
  "logo": "",
  "description": "OPEN ATLAS",
  "actions": [
    {
      "name": "Pixel Humain",
      "tags": [ "Toutes thémathiques" ],
      "description": "le PH agit localement",
      "images": [],
      "origine": "oui",
      "website": "www.echolocal.org"
    }
  ],
  "email": "my@gmail.com",
  "adress": "102 rue",
  "cp": "97421",
  "city": "Saint louis",
  "country": "Réunion",
  "phone": "06932"
}
4

1 回答 1

1

你可以试试这样

              collectionName->find(array("actions.tags" => array('$in' => "Environnement")));

我认为您不需要在单独的集合中维护这些操作。NoSQL 为您提供了更大的灵活性来嵌入文档。它允许子文档也被索引的事件。NoSQL 的真正强大之处在于将文档相互合并以获得更快的检索。我可以在这里看到的唯一缺点,您无法获取子文档的部分。find 将始终返回完整的父文档。如果您想显示一个子文档数组条目,这是不可能的。它将返回整个子文档,您必须在客户端进行过滤。因此,如果您打算将操作作为个人展示给最终用户,最好单独收集。

在这里阅读:http: //docs.mongodb.org/manual/use-cases/

于 2013-06-14T04:46:28.443 回答