我确信这是一个教科书问题,但我无法做到这一点。考虑拥有这样的10M Mongodb文档的集合:
{
prop1 : "a selective string property",
prop2 : "another selective string property",
attribs : [
{
k : 'attribute name',
v : 'short string value'
},
{
k : 'another attribute name',
v : 'short string value'
}
],
sortKey1 : "a short string being sorted on",
sortKey2 : "another short string being sorted on"
}
attribs
数组包含任意但少量的属性,比如少于20个。attribs.k
是属性的名称。有一个未知但仍然很少的这样的名字说少于200。attribs.v
是名为attribs.k
attribs.k
或attribs.v
针对此集合的典型查询是范围($in
,$lt
等)的组合,或prop1
,prop2
和attribs
上的相等。查询中的$and
字段可能有多个attribs
条件。结果按sortKey1
或sortKey2
排序。
最重要的问题当然是如何创建索引,以便索引能够正确支持上述任何查询。
真实世界的例子 - 一个商店:查找位于城市X,Y,Z的所有汽车,由K,L或M制造,行驶里程在50k到150k之间,带巡航控制,氙气灯,自动变速器,本身为红绿色或蓝色。
欢迎使用其他NoSQL dbs的解决方案,但首选Mongodb答案。更改架构的建议也没问题。