Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.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_Indexing_Geospatial_Mongodb Query_Multikey - Fatal编程技术网

Mongodb 具有另一个多键索引的地理空间索引。。。有什么解决办法吗?

Mongodb 具有另一个多键索引的地理空间索引。。。有什么解决办法吗?,mongodb,indexing,geospatial,mongodb-query,multikey,Mongodb,Indexing,Geospatial,Mongodb Query,Multikey,我有一个像下面这样的收藏。我想索引“location”和“product_list.id”。MongoDB似乎只允许在文档中使用单个多键索引。有可能的工作吗 { "location":[62.99932,71.23424], "product_list":[ {"id":"wf2r34f34ff33", "price": "87.99"}, {"id":"f334r3rff43ff", "price": "21.00"}, {"

我有一个像下面这样的收藏。我想索引“location”和“product_list.id”。MongoDB似乎只允许在文档中使用单个多键索引。有可能的工作吗

  {
    "location":[62.99932,71.23424],
    "product_list":[
        {"id":"wf2r34f34ff33", "price": "87.99"},
        {"id":"f334r3rff43ff", "price": "21.00"},
        {"id":"wf2r34f34ffef", "price": "87.99"}                    
        ],

    }

诚然,您只能在集合的单个复合索引中对单个数组类型的字段进行索引,但您似乎在谈论“地理空间”查询,这有点不同。这一点都没有错:

db.collection.ensureIndex({“位置”:“2d”,“产品列表”:1})
对于复合索引来说,这是一种完全有效的形式


所以它看起来像一个数组,但在本例中MongoDB的处理方式不同。

太好了!谢谢你,尼尔!你能给我指一下任何文档或博客,其中给出了详细的解释。我会试试这个。文档中有一些语句,比如说不能将地理空间查询与其他特殊查询(如文本)相结合。但在复合词中添加另一个简单的键并没有错。所以,在复合中生成多键索引并不是问题。简单的测试是,索引创建不会导致错误,实际上可以在查询中使用。例如,如果您尝试
位置:1,产品列表:1
,您将得到一个错误。