Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mongodb中查找密钥未知的时间_Mongodb_Mongodb Query - Fatal编程技术网

在mongodb中查找密钥未知的时间

在mongodb中查找密钥未知的时间,mongodb,mongodb-query,Mongodb,Mongodb Query,我有一个这样的文档结构 { "storeId":"WES-1234", "items":{ "PA-001":{ "name":"Cheetos Flamin' Hot", "qty":5, "inbound":7 }, "QX-7785":{ "name":"Kraft Handi Snack", "qty":7, "inb

我有一个这样的文档结构

{  
   "storeId":"WES-1234",
   "items":{  
      "PA-001":{  
         "name":"Cheetos Flamin' Hot",
         "qty":5,
         "inbound":7
      },
      "QX-7785":{  
         "name":"Kraft Handi Snack",
         "qty":7,
         "inbound":0
      }
   }
}
现在,我要做的是搜索
项目
,其
名称
包含“Nabisco”。我该怎么做?正如大家所看到的,
项目
是一个地图,而不是列表。 Mongo是2.6版

因此,在集合中,文档结构是这样的,我想知道哪些商店至少有3个Nabiscos或4个Cheetos,等等

PA-001和QX-7785是项目代码,它们是动态生成的,因此,它们的值不是固定的,也不是预先知道的

有没有办法查询这个结构?javascript很好,只要它能够实现我需要的查询


谢谢

我的mongo db版本是v4.0.0,在mongo控制台中:

db.test.find({"items.PA-001.name": /Nabisco/})

如果它不起作用,请告诉我。

@sprintone,将您的文档结构更改为以下内容:

{  
  "storeId":"WES-1234",
  "items":[{  
     "reference": "PA-001",  
     "name": "Cheetos Flamin' Hot",
     "qty":5,
     "inbound":7
  }, ...]
}

这样,您就可以执行数组的特定查询($elemMatch…),但也可以使用引用作为“外键”来执行查找。这样会更加灵活

我不明白你文件的结构。什么是
PA-001
QX-7785
。。。它们是所有项目的公共字段还是值。我想不出有这种文档结构的场景。是的,这是遗留结构,这些是项目代码,因此,无法预测下一个项目代码会是什么样子。我知道这会起作用,但这里的情况是字段名不可预测,由于PA-001和QZ-775是动态生成的ALLITEM代码,因此,值不是固定的或事先已知的,现在不能更改,因为数据已经是这样了,已经有计划迁移,但到目前为止,我们仍然需要查询此文档