📅  最后修改于: 2021-01-02 03:42:00             🧑  作者: Mango
Cloud Firestore是一个NoSQL,面向文档的数据库。没有表或行,数据存储在文档中,这些文档被组织为集合。每个文档都包含一组用于标识文档的键值对。这些键值对已针对存储大量小文档进行了优化。
所有文档必须存储在集合中。文档可以包含子集合和嵌套对象,其中可以包括诸如字符串之类的原始字段或诸如列表之类的复杂对象。
文档是一个轻量级记录,其中包含一个字段,该字段映射到值。名称标识每个文档,我们可以将文档视为轻量级JSON记录。
srastogi
first: "Shubham"
last: "Rastogi"
born: 1997
文档中复杂的嵌套对象称为地图。
srastogi
name:
first: "Shubham"
last: "Rastogi"
born: 1997
文档驻留在集合中,集合是非常简单的文档容器。集合是无架构的。我们对放入每个文档中的字段和存储在这些字段中的数据类型具有自由。同一集合中的文档可以包含并存储不同的字段以及这些字段中的不同类型的数据。
//Colection
users
//Document 1
srastogi
first : "Shubham"
last : "Rastogi"
born : 1997
//Document 2
arai
first : "Arpita"
last : "Rai"
born : 1997
子集合是与特定文档关联的集合。我们可以为房间集合中的每个房间文档创建一个称为消息的子集合。
//Coleection
Rooms
//Document 1
roomA
name: "my chat room"
messages
//Sub-collection 1
message1
from : "Shubham"
msg : "www.javatpoint.com"
//Sub-collection 2
message2
...
//Document 2
roomB
...
在Cloud Firestore中构建数据时,我们有以下选择
我们可以在文档中嵌套诸如数组或映射之类的复杂对象。如果我们有一个简单的固定数据列表,则可以轻松设置和简化数据结构。文档会随着列表的增加或增长而增长,这会导致文档检索时间变慢。因此,它不能作为另一种选择进行扩展。
当我们拥有可能随时间扩展的数据时,我们可以在文档内创建集合。随着列表的增加,父文档的大小不会更改,并且还会获得对子集合的完整查询功能。子集合有一个缺点或局限性,即我们不能轻易删除子集合。
//Collection
Science
//Document
software
name : "software chat"
//Sub-collection
users
//Document
srastogi
first: "Shubham"
last : "Rastogi"
//Document
prastogi
first: "Pearl"
last : "Rastogi"
//Document
optics physics
...
在根级别集合中,我们在数据库的根级别创建集合以组织不同的数据集。
例
//Collection
users
//Document
srastogi
first : "Shubham"
last : "Rastogi"
born : 1997
//Document
prastogi
first : "Pearl"
last : "Rastogi"
born : 1997
//Another root level collection
rooms
//Document
software
//Sub-collection
messages
//Document
message1
from : "srastogi"
content : "..."
//Document
message2
from : "srastogi"
content : "..."
val srastogiDocumentRef=db.collection("users").document("srastogi")
val usersCollectionRef=db.collection("users")
val srastogiDocumentRef=db.document("users/srastogi")
在子集合中创建对消息的引用
val messageRef=dp.collection("rooms").document("roomA").collection("messages").document("message1")