2012-05-29 74 views
0

文件我已經按照我的賬戶集合:蒙戈命令行查詢嵌入式按對象ID

{ "_id" : ObjectId("4fc55125476e0a27d9000003"), 
"created_at" : ISODate("2012-05-29T22:43:49Z"), 
"teachers" : [ { 
"_id" : ObjectId("4fc55125476e0a27d9000004"), 
"updated_at" : ISODate("2012-05-29T22:43:49Z"),  
"created_at" : ISODate("2012-05-29T22:43:49Z") 
} ], 
"updated_at" : ISODate("2012-05-29T22:43:49Z") 
} 

我想查詢那些具有_id 4fc55125476e0a27d9000003老師的賬戶。

如果我使用命令

db.accounts.findOne({"teachers._id" : ObjectId("4fc55125476e0a27d9000004")}) 

返回null。

此外,爲什麼mongo命令行事件掛起時,我使用find而不是findOne與上述命令。

+0

我剛剛保存了您的確切文檔,並通過您的確切查詢進行查詢並找回了文檔。當你剛剛執行db.accounts.find()時,文檔是否與你粘貼的文檔完全一樣? –

+0

不知道這是否只是一個錯字,但是你只要寫一次你想查詢** 4fc55125476e0a27d9000003 **,但是你的查詢在最後顯示** 4 **。如果您的數據集不包含... 3的條目,您將無法找到它。持有...... 3的_id是包含其中的教師信息的_id。無論如何,該查詢應該工作。 – philnate

+0

@philnate你是對的。我打算使用老師的編號,即其中有4個的編號。也許這就是我得到null的原因。我會再試一次(今晚晚些時候,現在不能),併發布我發現的內容。謝謝! – septerr

回答

1

正如其他人指出的,查詢實際上起作用。不知道那天發生了什麼,我無法讓它返回正確的結果。也許我正在使用不正確的數據庫。感謝您爲浪費您的時間而提供的幫助和道歉。