我在保存新文件时试图拒绝重复。
我的文件如下:
{ "STATION_ID" : "KLFI",
"TimeAsDate" : 1437656400000,
"TIME" : "231500Z",
"MYVISIBILITY" : 9600,
"SKYCONDITIONS" : { "1" : { "cloud_base_ft_amsl" : 5009.8424,
"cloud_base_ft_agl" : "5000",
"sky_cover" : 3 },
"2" : 0,
"3" : 0
},
"LATITUDE" : 37.07,
"LONGITUDE" : -76.37,
"_id" : ObjectId("55b0e0df80e44b30365e41de"),
"__v" : 0
}
在导入新文档时,可能会有一些重复,所以我想要拒绝所有具有相同STATION_ID和TIME(仅在同一文档中)的文档。 如果STATION_ID相同且TIME不同,我想保留它。
我相信我可以使用复合唯一索引这样做:
db.meteo.createIndex({TIME: 1, STATION_ID: 1}, {unique: true, dropDups: true})
但它并不能按照我想要的方式运作,它拒绝过多的条目,而不是拥有或多或少60,000个条目,而现在只有7000条。
我不是Javascript或MongoDB专家,我不想走上正轨,有人可以帮助我吗?
此致
答案 0 :(得分:0)
如果我理解正确,我认为您可以在update
上使用upsert选项这允许您输入更新查询,例如upsert : true
并传入要更新的文档。
使用def getProps(String propName) {
def propsFile = rootProject.file('local.properties')
if (propsFile.exists()) {
def props = new Properties()
props.load(new FileInputStream(propsFile))
return props[propName]
} else {
return "";
}
}
标志意味着只会将未满足更新查询的文档创建为新文档,因此不会创建重复项。
这假设如果未更改STATION_ID和TimeAsDate,则文档的其余部分也不会更改。