我有一個測試對象作爲一個樹上的節點,包含0個或更多的同一類型的子實例。我堅持使用MongoDB並使用Morphia查詢它。MongoDB/Morphia - 投影不能用於遞歸對象?
我執行以下查詢:
db.TestObject.find({}, { _id: 1, childrenTestObjects: 1 }).limit(6).sort({_id: 1 }).pretty();
導致:
{ "_id" : NumberLong(1) }
{ "_id" : NumberLong(2) }
{ "_id" : NumberLong(3) }
{ "_id" : NumberLong(4) }
{
"_id" : NumberLong(5),
"childrenTestObjects" : [
{
"stringValue" : "6eb887126d24e8f1cd8ad5033482c781",
"creationDate" : ISODate("1997-05-24T00:00:00Z")
"childrenTestObjects" : [
{
"stringValue" : "2ab8f86410b4f3bdcc747699295eb5a4",
"creationDate" : ISODate("2024-10-10T00:00:00Z"),
"_id" : NumberLong(7)
}
],
"_id" : NumberLong(6)
}
]
}
這是真棒,但也有點令人吃驚。我有兩個問題的結果:
1)當我做一個投影,它只適用於頂部的元素。子元素仍然返回不在投影中的其他屬性(stringValue和creationDate)。我希望字段選擇適用於相同類型的所有文檔和子文檔。此樹的子項數量已減少,因此我無法在查詢中明確指定。如何做到這一點?
2)令我驚訝的是,限制適用於子文件!你會發現有一個嵌入式文檔的id爲6,我期待看到6個含N個子文檔的頂層文檔,但只有5個。如何告訴MongoDB返回6個頂層元素,而不管嵌入其中的是什麼?沒有一個一致的分頁系統是不可能的。
所有的幫助都讓MongoDB學得更快,我真的很感激!謝謝!
在廣泛搜索發生了什麼之後,我意識到我的測試數據中有一個問題。所以#2不是一個有效的問題,它的行爲如預期。謝謝!! – 2015-01-01 18:14:59