我有一个典型的数据以有点奇怪的方式存储(可能没有多大意义,但它的历史数据是这样存储的):
{
1:{"text:text"},
2:{"text:text"},
3:{"text:text"},
4:{"text:text"},
5:{"text:text"}
}在这里,键是从0到100000之间的简单数字.现在,我想通过动态密钥数据(如,获取键范围为2-4的记录)来获取数据,如下所示:
{
2:{"text:text"},
3:{"text:text"},
4:{"text:text"},
}有使用动态键处理这类数据的建议吗?
发布于 2015-11-20 08:25:36
对于给定的范围,例如2-4,您可以创建一个具有dot notation属性的对象,以表示查询中嵌入的动态键。构造对象本身将使用bracket notation
var i = start = 2,
end = 4,
search = "text",
query = {};
for (;i<=end;i++){ query[i+".text"] = search; }
db.collection.find(query);检查下面的演示。
var i = start = 2,
end = 4,
search = "text",
query = {};
for (;i<=end;i++){ query[i+".text"] = search; }
pre.innerHTML = "query: " + JSON.stringify(query, null, 4);<pre id="pre"></pre>
https://stackoverflow.com/questions/33821268
复制相似问题