Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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
Mongodb 如何基于索引位置向数组添加元素_Mongodb - Fatal编程技术网

Mongodb 如何基于索引位置向数组添加元素

Mongodb 如何基于索引位置向数组添加元素,mongodb,Mongodb,我有以下文件: { "_id" : 5, "quizzes" : [ { "x": 111, "score" : 10, "index" : 2 }, { "x": 2, "score" : 8, "index" : 1 }, { "x": 13, "score" : 5, "index" : 0 }, { "x": 4, "score" : 6, "index" : 3 } ] } 现在在UI端,我可以添加新的测验,这些测验可以添加到列表中的任何位置(开始、结

我有以下文件:

{
 "_id" : 5,
 "quizzes" : [
   { "x": 111, "score" : 10, "index" : 2 },
   { "x": 2, "score" : 8, "index" : 1 },
   { "x": 13, "score" : 5, "index" : 0 },
   { "x": 4, "score" : 6, "index" : 3 }
  ]
}
现在在UI端,我可以添加新的测验,这些测验可以添加到列表中的任何位置(开始、结束或上面的任何索引)

我还可以删除一个测验,这意味着上面的列表索引会发生变化。此外,我还可以重新安排测验,这意味着在重新安排测验之后,这些测验的索引将发生变化

现在,在mongo世界中,处理这些场景的最佳方式是什么

我是否应该阅读整个文档并替换整个测验部分(请注意,我的实际文档将在数组中包含更多数据)?
或者我是否根据我正在执行的操作(添加、删除、重新排序)应用特定的操作($push等)以更具体地说明我正在执行的操作?

测验
数组中是否存在唯一的字段值?i、 e.
x
的值在数组中的对象中是唯一的。如果是,那么您可以通过查询来完成。不用想,x不是唯一的。一些唯一的字段值将有助于您使用的查询。好的,假设我有一个唯一的字段-如果我对x:2现在位于索引0的位置进行重新排序,我将需要更新所有其他索引(x:13现在位于索引1)。我该怎么做?最佳做法是重新保存所有重新编制索引的数组,因为在BSON中,数组顺序是保留的