簡體   English   中英

查詢Mongo中的嵌套列表存在

[英]Querying Nested List Existence in Mongo

我在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
        }

我想查詢其plays.clicks屬性是非空列表的文檔。 我試過沒有運氣的存在。 我認為這樣的事情可能有用:

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

但我相信這只會返回播放數組中第一個元素包含非空單擊列表的文檔。

我是怎么想到這件事的?

謝謝

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

是正確的語法,但是,因為plays是一個列表,查詢將匹配plays中具有點擊次數的任何文檔 沒有辦法以這種方式為子元素檢索數組的子集[1]。 有一個子/虛擬收藏票[2]

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

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

將列表的大小保存為單獨的屬性(例如num_plays )。 然后,您可以查詢num_plays大於0文檔:

尚未測試,但我認為您想要的查詢是

{ "plays.clicks" : { "$size" : 0 } }

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24size

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM