2013-01-01 97 views
0

我有一些麻煩,試圖查詢在蒙戈的字段。我的文檔看起來像這樣:查詢MongoDB的嵌入式陣列

{ 
    "short_url": "DTsB9k", 
    "long_url": "http://www.example.com", 
    "date_created": { 
     "$date": "2013-01-01T14:10:29.899Z" 
    }, 
    "ips": { 
     "24.184.209.227": { 
      "ip_address": "12.34.56.78", 
      "clicks": [ 
       { 
        "click_date": { 
         "$date": "2013-01-01T14:10:41.784Z" 
        }, 
        "click_referrer": null 
       }, 
       { 
        "click_date": { 
         "$date": "2013-01-01T14:31:32.440Z" 
        }, 
        "click_referrer": null 
       } 
      ] 
     } 
    }, 
    "users": { 
     "4": { 
      "user_id": "4", 
      "date_added": { 
       "$date": "2013-01-01T14:10:29.899Z" 
      }, 
      "creator": true 
     } 
    }, 
    "total_clicks": 2, 
    "_id": { 
     "$oid": "50e2ee55569df0b469000000" 
    } 
} 

我想查詢user_id,最終會有多個。但我試過

{ "users" : "4" } 
{ "users.user_id" : "4" } 
{ "users.*.user_id" : "4" } 

這些都沒有工作。我在這做錯了什麼?

回答

2
  1. {「用戶」:4}將只找到與用戶字段的文檔,其等於4,或用戶的字段,它等於陣列含有其等於4

  2. {」一個元件users.user_id「:4}會工作,如果你有USER_ID直接在用戶對象下,但它是在」4「,所以它不能匹配

  3. {」users。*。user_id「:」4 「}我不認爲mongodb具有這樣的通配符功能。

來獲取該記錄上面你可以試試:

{"users.4.user_id": "4"}


編輯: 如果 「4」 下的 「用戶」 是一樣的USER_ID,你也可以請嘗試查詢:

{"users.4":{$exists:true}}