查找集合中哪个字段的大小大于20000(mongodb)

时间:2017-04-06 21:04:54

标签: javascript mongodb

我在我的收藏中有这个文件,我需要找到这样的所有文件的哪个字段的值大于20000。一些字段正在为集合动态变化。

Se_data = pd.Series(Counter(np.random.randint(0,10,100)))
with plt.style.context("seaborn-whitegrid"):
    fig, ax = plt.subplots()
    Se_data.plot(kind="barh", ax=ax, title="No Border")
    ax.spines['bottom'].set_color('0.5')
    ax.spines['top'].set_color(None)
    ax.spines['right'].set_color('0.5')
    ax.spines['left'].set_color(None)
    ax.patch.set_facecolor('0.1')
    plt.grid(b=True, which='major', color='0.2', linestyle='-')
    plt.grid(b=True, which='minor', color='0.2', linestyle='-')
    ax.tick_params(axis='x', colors='0.7', which='both')
    ax.tick_params(axis='y', colors='0.7', which='both')
    ax.yaxis.label.set_color('0.9')
    ax.xaxis.label.set_color('0.9')
    ax.margins(5)
    fig.patch.set_facecolor('0.15')

这有效但我还需要检查其他字段;但是我不想为每个人手动编写查询。这有什么方法吗? 例如,我想检查

db.doors.find(
  {
    "doorseller": "e0asda9a0fqqf7-f0asdas66-48c4-bfe5-ssss", 
    "good.Derinlik.value" : {$exists:true}, 
     $where: "this.good.Derinlik.value.length > 20000" 
  }
)

这些文件正在改变,每个文件都有其名称。

这是示例文档

-runningStatus
-good.renkodu.value

1 个答案:

答案 0 :(得分:1)

我可以建议您可以在DBshell中运行的简单javascript代码:

var keys = [];

db.doors.find({}).forEach(function(doc){
    for (var key in doc){ 
      if(typeof(doc[key]) == 'number' && doc[key] > 20000){
       keys.push({"doc.id": doc._id, "key":key, "value":doc[key]});
      }
    }
});
print(keys);   // prints all the results
  

备注:

     
      
  1. 当您有许多文档时,doc.id是特定文档的标识符。
  2.   
  3. 当值在同一深度(级别0)时,上面的脚本很好。
  4.