我打算爲我的MongoDB模式設計使用嵌套的文檔結構,因爲我不想去平面模式設計,因爲在我的情況下,我需要僅在一個查詢中獲取我的結果。在mongodb中使用嵌套的文檔結構
由於MongoDB具有文檔的大小限制。 MongoDB Limits and Threshold
A MongoDB document has a size limit of 16MB (an amount of data). If your subcollection can growth without limits go flat.
我不需要去找我嵌套的數據,但只需要我的嵌套的數據進行過濾和查詢的目的。
我想知道我是否仍然受MongoDB大小限制的約束,即使我僅將我的嵌入數據用於查詢和過濾目的,並且從不用於獲取嵌套數據,因爲按照我的理解,在這種情況下,MongoDB將不會加載整個文檔在內存中,但只有選定的領域?
嵌套架構設計例如
{
clinicName: "XYZ Hopital",
clinicAddress: "ABC place.",
"doctorsWorking":{
"doctorId1":{
"doctorJoined": ISODate("2017-03-15T10:47:47.647Z")
},
"doctorId2":{
"doctorJoined": ISODate("2017-04-15T10:47:47.647Z")
},
"doctorId3":{
"doctorJoined": ISODate("2017-05-15T10:47:47.647Z")
},
...
...
//upto 30000-40000 more records suppose
}
}
感謝您花時間回答。 db.Clinic.update({「_ id」:ObjectId(「58e5e3ec54ccefdd4d85f638」)},{$ set:{「}我將不會加載整個文檔,但只是其中的一部分而不是像 ''db.Clinic.update doctorsWorking.doctor5 「:{ 」doctorJoined「:ISODate(」 2017-05-15T10:47:47.647Z「) } }}''' 使用這種方法只會更新特定領域提供 我。想知道的是,即使使用這種方法,或者只是其中一部分被更新,它是否會將完整的文檔加載到內存中? https://docs.mongodb.com/manual/reference/operator/update/set/ –
@RobinsGupta MongoDB會知道整個文檔太大,並停止更新。 –
@RobinsGupta它不允許超過16 MB的任何文檔。通過任何更新或通過插入或通過upsert。 –