Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 如果元素已经存在于数组字段中,那么arrayUnion是否需要Firestore中的写入计数?_Firebase_Google Cloud Firestore - Fatal编程技术网

Firebase 如果元素已经存在于数组字段中,那么arrayUnion是否需要Firestore中的写入计数?

Firebase 如果元素已经存在于数组字段中,那么arrayUnion是否需要Firestore中的写入计数?,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,我试图找出如果arrayUnion操作不修改现有的数组字段,它是否仍然会产生写操作的成本 例如,如果我们在firestore中有一个数组[1,2],而我在做ArrayUI[3],那么很明显,该数组将被修改为[1,2,3],写入操作将计数 但是,如果我正在对firestore中已存在为[1,2,3]的数组执行arrayUnion[3],则不会修改该数组。这会产生写入成本吗?根据: 返回可用于set、create或update的特殊值,该值告诉服务器将给定元素与服务器上已存在的任何数组值合并。数组中

我试图找出如果arrayUnion操作不修改现有的数组字段,它是否仍然会产生写操作的成本

例如,如果我们在firestore中有一个数组[1,2],而我在做ArrayUI[3],那么很明显,该数组将被修改为[1,2,3],写入操作将计数

但是,如果我正在对firestore中已存在为[1,2,3]的数组执行arrayUnion[3],则不会修改该数组。这会产生写入成本吗?

根据:

返回可用于set、create或update的特殊值,该值告诉服务器将给定元素与服务器上已存在的任何数组值合并。数组中不存在的每个指定元素都将添加到末尾。如果要修改的字段还不是数组,它将被完全包含指定元素的数组覆盖

因此,当您调用arrayUnion时,它将计为一次写入。

根据:

返回可用于set、create或update的特殊值,该值告诉服务器将给定元素与服务器上已存在的任何数组值合并。数组中不存在的每个指定元素都将添加到末尾。如果要修改的字段还不是数组,它将被完全包含指定元素的数组覆盖


因此,当您调用arrayUnion时,它将计为一次写入。

正如Doug Stevenson所建议的,我在firebase项目中多次仅执行此写入操作进行测试。它每次都会发生写操作。

正如Doug Stevenson所建议的,我在firebase项目中多次只执行这种写操作。每次写入都会发生。

即使数组没有被arrayUnion修改,它仍然会被视为一次写入吗?如果数据库中有数组1,2,并且您使用arrayUnion[1,2,3],那么您添加的是3,这是一次写入。对于这个混乱的示例,我很抱歉。我的意思是数据库中的数组是[1,2,3],我正在做ArrayNion[1,2]。是的,它仍然是一个写操作,当你做ArrayNion 1,2时,你有1,2,3,然后你在做一个写操作来修改数组。我用一个更简单的例子更新了这个问题。在第二种情况下,将不会修改数组。根据文档:即使数组没有被arrayUnion修改,它仍然会算作一次写入吗?如果数据库中有数组1,2,并且你做了arrayUnion[1,2,3],那么你是在添加3,这是一次写入。很抱歉,这个混淆的例子。我的意思是数据库中的数组是[1,2,3],我正在做ArrayNion[1,2]。是的,它仍然是一个写操作,当你做ArrayNion 1,2时,你有1,2,3,然后你在做一个写操作来修改数组。我用一个更简单的例子更新了这个问题。在第二种情况下,将不会修改数组。根据docs的说法:这听起来像是你可以使用Firebase控制台自己测试的东西,以测量写操作。确保只执行一个您关心的写操作,在这段时间内对项目不做任何其他操作。这听起来像是您可以使用Firebase控制台来测试自己的写操作。在这段时间内,请确保只执行您关心的一个写操作,而不要对项目执行其他操作。