2013-01-01 45 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}}