如果要将大量对象/文档插入MongoDB(使用Mongoose)。但是每个对象都有一个首先需要填充的属性。为每个文档查询MongoDB的此属性是否更快?或者最好每次都获得一个大数组并循环播放。
查询和循环非常简单,查询的文档很小。集合(以及阵列)有大约3000个项目。
Mongos索引,本机驱动程序等在什么时候超过了查询的开销?
编辑: 一个简单的例子就是。
我有一系列像这样的文件。
{
prop1: 'abc',
prop2: '123',
prop3: ''
}
对于prop3
的值,我需要查询MongoDB以匹配prop1
。这些文件看起来像这样。
{
prop1: 'abc',
prop3: 564
}
这些第二份文件中约有3000份。所以我查询它们或循环数组
答案 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)一次性在数据库中插入更新的数组。