2017-05-31 156 views
0

當我試圖加入mongo數據庫$ $查找返回空數組。

我有兩個集合一個是user_information,另一個是add_to_cart.In。我想在user_information中使用user_id獲取用戶表單add_to_cart集合的add_to_cart細節。

add_to_cart集合:

[ 
    { 
    "_id": { 
     "$id": "592ec12b744a12d014000031" 
    }, 
    "order_id": "592ec125744a12d014000030", 
    "table_id": 1, 
    "category_name": "veg", 
    "food_id": "5923c8bc744a12441e000031", 
    "user_id": "592ec125744a12d01400002f", 
    "food_name": "Cream Of Mushroom Soup", 
    "food_per_price": "100", 
    "food_total_price": 100, 
    "food_qty": 1, 
    "active_status": 0, 
    "created_at": { 
     "sec": 1496236331, 
     "usec": 0 
    }, 
    "updated_at": { 
     "sec": 1496236331, 
     "usec": 0 
    } 
    }, 
    { 
    "_id": { 
     "$id": "592ec12e744a12d014000032" 
    }, 
    "order_id": "592ec125744a12d014000030", 
    "table_id": 1, 
    "category_name": "veg", 
    "food_id": "5923c8cb744a12441e000033", 
    "user_id": "592ec125744a12d01400002f", 
    "food_name": "Cream Of Mushroom Soup", 
    "food_per_price": "100", 
    "food_total_price": 100, 
    "food_qty": 1, 
    "active_status": 0, 
    "created_at": { 
     "sec": 1496236334, 
     "usec": 0 
    }, 
    "updated_at": { 
     "sec": 1496236334, 
     "usec": 0 
    } 
    } 
] 

user_information集合:

[ 
    { 
    "_id": { 
     "$id": "592ec125744a12d01400002f" 
    }, 
    "branch_id": 1, 
    "brand_id": 1, 
    "business_id": 1, 
    "table_id": 1, 
    "uid": "116907438816775509716", 
    "user_name": "dhamo dharan", 
    "user_email": "[email protected]", 
    "user_provider": "google", 
    "user_image": "https://lh5.googleusercontent.com/-Masl6FTlG_g/AAAAAAAAAAI/AAAAAAAAAEo/UV3oTjMnqzQ/s96-c/photo.jpg", 
    "active_status": 0, 
    "created_at": { 
     "sec": 1496236325, 
     "usec": 0 
    }, 
    "updated_at": { 
     "sec": 1496236325, 
     "usec": 0 
    } 
    } 
] 

我的數據庫查詢

db.add_to_cart.aggregate([ 
    { "$match": { "user_id": "592ec125744a12d01400002f" } }, 
    { "$sort": { "created_at": -1 } }, 
    { "$limit": 20 }, 
    { "$lookup": { 
    "from": "user_information", 
    "localField": "user_id", 
    "foreignField": "_id", 
    "as": "userinfo" 
    } }, 
    { "$unwind": "$userinfo" }, 
    { "$project": { 
    "food_name": 1, 
    "food_qty": 1, 
    "userinfo.user_name": 1, 
    "userinfo.user_email": 1 
    } } 
]) 

它將返回空的結果,我不知道哪裏出了wrong.Thanks在提前!

+0

因爲' 「user_ID的」: 「592ec125744a12d01400002f」'是 ​​「串」 和' 「_id」:{「$ ID 「:」592ec125744a12d01400002f「}」是真實的y'ObjectId',雖然是Java驅動程序在控制檯輸出中執行的方式。這兩種類型**不匹配**。根本原因是''user_id''應該被存儲爲'ObjectId',但是你的應用程序代碼做錯了。 –

+0

感謝它將id更改爲對象後正在工作! –

+0

如果在查詢本身中存在任何將id轉換爲objectId的方法 –

回答

0

簡單的話 - 你的匹配查詢是錯誤的。

因爲「user_ID的」:「592ec125744a12d01400002f」是「字符串」,匹配正常工作與字符串的ObjectId

但是當我們談論總,您能不能給直接串正常查找查詢..你總是給mongoose.Types.ObjectId(用戶ID),其中userid是字符串

var userId="592ec125744a12d01400002f"; 


db.add_to_cart.aggregate([ 
{ "$match": { "user_id": mongoose.Types.ObjectId(userId) } }, 
{ "$sort": { "created_at": -1 } }, 
{ "$limit": 20 }, 
{ "$lookup": { 
"from": "user_information", 
"localField": "user_id", 
"foreignField": "_id", 
"as": "userinfo" 
} }, 
{ "$unwind": "$userinfo" }, 
{ "$project": { 
"food_name": 1, 
"food_qty": 1, 
"userinfo.user_name": 1, 
"userinfo.user_email": 1 
} } 
])