我以一种奇怪的方式存储的典型数据(可能没有多大意义,但其历史数据存储如此):
{
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"},
}
使用动态密钥处理此类数据的任何建议?
答案 0 :(得分:1)
对于给定范围(例如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);
&#13;
<pre id="pre"></pre>
&#13;