javascript - Mongo中查询嵌套列表是否存在

标签 javascript mongodb nosql

我在 Mongo 中有一个文档,其结构如下:

{ 
    "_id" : ObjectId("4eea7237d0ba3a04f20008fb"), 
    "code" : "b2677c2809c844cc9d7e3e4ff8d95b46", 
    "city_id" : 4, 
    "datetime" : ISODate("2011-12-13T18:41:44.062Z"), 
    "plays" : [     
        {   
          "play_id" : 717224,   
          "clicks" : [ ],   
          "order" : 1,  
          "mysql_id" : 145
        }

我想查询其 play.clicks 属性为非空列表的文档。我试过没有运气存在。我认为这样的事情可能会起作用:

 db.collection.find({plays.clicks.0: {$exists:true}})

但我相信这只会返回 play 数组中第一个元素包含非空点击列表的文档。

有没有想过如何完成这项工作?

谢谢

最佳答案

db.collection.find({plays.clicks.0: {$exists:true}})

是正确的语法,但是由于 plays 是一个列表,因此查询将匹配 任何在 plays 中有点击的文档。无法以这种方式检索子元素的 Array 子集 [1]。子/虚拟收藏有一张票[2]

[1] http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields#RetrievingaSubsetofFields-RetrievingaSubrangeofArrayElements

[2] https://jira.mongodb.org/browse/SERVER-828

关于javascript - Mongo中查询嵌套列表是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8583179/

相关文章:

javascript - 使用 Javascript 的 Sharepoint 表单 Webpart

node.js - 如何使用node.js获取mongodb中createAt以来的时间?

nosql - 图数据库: Neo4j & AllegroGraph的区别

database - Elasticsearch 聚合过滤器

javascript - 如何在不考虑最后一个空白行的情况下对jqGrid进行排序

javascript - javascript中模块的两个声明有什么区别?

mongodb - 如何在 MongoDB 中对数组类型的字段进行排序

node.js - Mongoose如何实现嵌套查询

elasticsearch - elasticsearch上的双向匹配

javascript - Res.Render is not a function 错误在node.js