Arrays 在mongo文档深处搜索数组

Arrays 在mongo文档深处搜索数组,arrays,mongodb,search,Arrays,Mongodb,Search,在我的名为pixels的mongo集合中,我有类似示例的文档 我正在寻找一种方法来搜索文档中的actions.tags部分 db.pixelsactifs.actions.find({tags:{$in : ["Environnement"]}}) db.pixelsactifs.find({actions.tags:{$in : {Environnement}}) 不起作用。我也在寻找PHP的等价物 我也在问自己,我应该做一个“动作”集合,而不是把所有的东西都放在一个文档中吗 我是mongo

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

db.pixelsactifs.actions.find({tags:{$in : ["Environnement"]}})
db.pixelsactifs.find({actions.tags:{$in : {Environnement}})
不起作用。我也在寻找PHP的等价物

我也在问自己,我应该做一个“动作”集合,而不是把所有的东西都放在一个文档中吗 我是mongo的新手,所以任何关于构建db的好教程都会很棒

谢谢你的洞察力

{
  "_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"
}
你可以这样试试

              collectionName->find(array("actions.tags" => array('$in' => "Environnement")));
我认为您不需要在单独的集合中维护操作。NoSQL为您提供了更大的灵活性来嵌入文档。事件它允许子文档也被索引。NoSQL的真正威力在于将文档相互合并以获得更快的检索。我在这里看到的唯一的缺点是,您无法获得子文档的部分。“查找”将始终返回完整的父文档。如果要显示子文档数组的一个条目,则不可能。它将返回整个子文档,您必须在客户端进行筛选。所以,如果您计划向最终用户显示单个操作,最好在单独的集合中显示

阅读这里:

你可以这样试试

              collectionName->find(array("actions.tags" => array('$in' => "Environnement")));
我认为您不需要在单独的集合中维护操作。NoSQL为您提供了更大的灵活性来嵌入文档。事件它允许子文档也被索引。NoSQL的真正威力在于将文档相互合并以获得更快的检索。我在这里看到的唯一的缺点是,您无法获得子文档的部分。“查找”将始终返回完整的父文档。如果要显示子文档数组的一个条目,则不可能。它将返回整个子文档,您必须在客户端进行筛选。所以,如果您计划向最终用户显示单个操作,最好在单独的集合中显示


阅读此处:

此外,如果您只是在数组中检查一个值,则可以不使用
$in
而只需查询
[“action.tags”=>“environment”]
。如果您正在检查多个匹配项(功能上是“或”查询),则最有用。相反,运算符的功能类似于“and”查询。此外,如果您只是在数组中检查一个值,则可以不使用
$in
,只需查询
[“action.tags”=>“environment”]
。如果您正在检查多个匹配项(功能上是“或”查询),则最有用。相反,运算符的功能类似于“and”查询。