在我的mongo集合中称为像素,我有像样本一样的文档 我正在寻找一种方法来搜索actions.tags文件的一部分?
db.pixelsactifs.actions.find({tags:{$in : ["Environnement"]}})
db.pixelsactifs.find({actions.tags:{$in : {Environnement}})
不起作用。我也在寻找PHP等价物?
我也问自己应该制作一个“动作”集合,而不是把所有内容放在一个文档中 我是mongo的新手,所以任何有关构建数据库的好教程都会很棒
感谢您的见解
{
"_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"
}
答案 0 :(得分:1)
你可以这样尝试
collectionName->find(array("actions.tags" => array('$in' => "Environnement")));
我认为您不需要在单独的集合中维护操作。 NoSQL为您提供了嵌入文档的更大灵活性。事件它允许子文档也被索引。 NoSQL的真正力量在于将文档合并到一起以获得更快的检索。我可以在这里看到的唯一的短暂,你不能得到子文件的一部分。 find将始终返回完整的父文档。如果要显示子文档数组的一个条目,则无法实现。它将返回整个子文档,您必须在客户端进行筛选。因此,如果您计划将行动显示为最终用户,则最好有单独的集合