mongodb通过指定动态密钥数据的范围来查询文档

时间:2015-11-20 07:36:20

标签: mongodb

我以一种奇怪的方式存储的典型数据(可能没有多大意义,但其历史数据存储如此):

{
   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"},
}

使用动态密钥处理此类数据的任何建议?

1 个答案:

答案 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);

查看下面的演示。

&#13;
&#13;
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;
&#13;
&#13;