区分数组与文档中的单个值

时间:2014-10-02 07:30:19

标签: mongodb mongodb-query

我在mongodb集合中有两种类型的文档:

  • 关键会话具有简单值的一个:

    {“sessions”:NumberLong(“10000000000001”)}

  • 其中一个关键会话有一个值数组。

    {“sessions”:[NumberLong(“10000000000001”)]}

有没有办法从第二类中检索所有文件,即。只有价值是arary而不是简单值的文件?

2 个答案:

答案 0 :(得分:1)

您可以使用此类查询:

db.collectionName.find( { $where : "Array.isArray(this.sessions)" } );

但您最好将所有记录转换为一种类型以保持一致。

答案 1 :(得分:1)

这段代码可以很简单:

db.c.find({sessions:{$gte:[]}});

说明:

  • 因为您只想检索会话数据类型为数组的文档,以及 $ gte 的功能(如果两个操作数之间的数据类型不同,则返回false; Double,Integer32,Integer64被认为是相同的数据类型。),给出一个空数组作为相反的操作数将有助于根据需要检索所有结果。
  • 此外,$gt, $lt, $lte用于标准查询(注意:对聚合管道表达式中具有相同名称的操作符的不同行为)具有相同的功能。我通过MongoDB V2.4.8,V2.6.4上的练习证明了这一点。