是否更好地查询MongoDB或循环大型数组

时间:2016-06-03 08:49:03

标签: node.js mongodb mongoose

如果要将大量对象/文档插入MongoDB(使用Mongoose)。但是每个对象都有一个首先需要填充的属性。为每个文档查询MongoDB的此属性是否更快?或者最好每次都获得一个大数组并循环播放。

查询和循环非常简单,查询的文档很小。集合(以及阵列)有大约3000个项目。

Mongos索引,本机驱动程序等在什么时候超过了查询的开销?

编辑: 一个简单的例子就是。

我有一系列像这样的文件。

{
    prop1: 'abc',
    prop2: '123',
    prop3: ''
}

对于prop3的值,我需要查询MongoDB以匹配prop1。这些文件看起来像这样。

{
    prop1: 'abc',
    prop3: 564
}

这些第二份文件中约有3000份。所以我查询它们或循环数组

1 个答案:

答案 0 :(得分:1)

如果我已正确理解您的问题,您希望执行以下操作

1)您有一个需要在db中插入的数组。

var array=[
           {foo: "foo", bar:""},
           {foo: "foo", bar:""},
           {foo: "foo", bar:""}
          ]

2)输入数组不完整。在插入db之前,需要在数组的每个对象中为其中一个属性(在本例中为 bar )赋值。

var array=[
               {foo: "foo", bar:"bar"},
               {foo: "foo", bar:"bar1"},
               {foo: "foo", bar:"bar2"},
          ]

在这种情况下,我想说循环数组是任何一天比逐个访问数据库更好的选择。记住db操作比循环更经常。

你应该做

1) var array=[//array goes here ]

2)遍历数组并为属性赋值

for(//iterate through array){
         //assign the property value
   }

3)一次性在数据库中插入更新的数组。