0
我在mongo上有一個名爲「reports」的集合,它有客戶評論和討論的能力。
這裏是「討論」陣列看起來像在每個報告:
"discussions" : [
{
"user_id" : "david",
"timestamp" : ISODate("2016-03-17T01:15:00Z"),
"comment" : "I was wondering, did anyone else find it interesting?",
"replies" : [
{
"user_id" : "kevin",
"timestamp" : ISODate("2016-03-17T01:15:00Z"),
"comment" : "Not really"
}
]
}
]
由於每個評論經常更改上述用戶所顯示的信息,我想用引用和拉他們的信息「用戶「集合的基礎上,而不是將其信息嵌入到每個討論帖中。 我希望能夠靈活地分割整個數據庫,因此「$ lookup」可能是不可行的(因爲如果我理解正確,「$ lookup」中的「from」字段不能被分割)。
因此,我想建立一個「$或」查詢,將類似於下面的SQL:
SELECT * FROM USERS WHERE id IN ('david', 'kevin')
,這將拉動從用戶收集其他用戶信息,然後用它們組合起來其餘的應用程序級別的評論細節。
因此,我推送find()的查詢是由應用程序通過迭代「reports」結果並提取「user_id」來構建的。 這是查詢的var_dump的樣子:
array(1) {
["$or"]=>
array(1) {
[0]=>
array(1) {
["_id"]=>
string(4) "david"
},
[1]=>
array(1) {
["_id"]=>
string(4) "kevin"
}
}
}
但是,它似乎並不如我沒有得到任何結果,儘管其在數據庫中的用戶的工作。 注意:「users」集合中的用戶的_id是用戶名。
我在做$或查詢不正確(我在文檔中看到的是'$ or'在不同的字段上執行)? 有沒有更好的方法來完全解決這個問題? 在此先感謝!