【发布时间】:2021-08-11 09:58:34
【问题描述】:
insertMany() 中的重复文档
嗨。我对 insertMany() 函数有很大的问题。 我的目标是:
- 观察名为“List.json”的文件
- 如果有变化,则读取文件
- 然后将文件List.json中的文档写入数据库mongoDb List.json 文件由用户在页面上上传。
问题是我的功能正在运行,但它在 2 或 3 次后给我写文档。我不知道它是由什么引起的。 我希望 List.json 文件中的一份文档仅添加 1 次。 如果可能的话,我希望程序检查数据库中是否已经存在具有给定“Nazwisko”的文档。如果存在,则不要将其添加到数据库中。
我不使用 Moongose。 我只使用 mongoDb 和 node.js 我对mongo知之甚少
这是我的功能
fs.watch(file("Lista.json"), function (eventType, filename) {
fs.readFile(file(filename), function (err, data) {
const bazaJson = data; //fs.readFileSync(file("Lista.json").toString());
const bazaJson1 = bazaJson.toString();
const bazaJsonObject = JSON.parse(bazaJson1);
client.connect((err) => {
if (err) {
console.log("błąd polaczenia /manySaveDatabase");
client.close();
} else {
const db = client.db("test"); //pobieram nazwe bazy danych test
const candidate = db.collection("candidate"); // nazwa naszej kolekcji
console.log("polaczenie udane z bazą /manySaveDatabase");
try {
candidate.insertMany(bazaJsonObject, {
ordered: false,
});
} catch (e) {
console.log("wystąpil blad e: ", e);
}
}
});
});
});
这是我的 List.json 文件内容
[
{
"Imie": "Katarzyna",
"Nazwisko": "Mongoł",
"Miejscowosc": "Kraków (Kraków-Śródmieście)",
"Angielski": "Angielski C2"
},
{
"Imie": "Marieta",
"Nazwisko": "Mongołacc",
"Miejscowosc": "Rybnik",
"Angielski": "Angielski C1",
},
{
"Imie": "Marieta",
"Nazwisko": "Mcc",
"Miejscowosc": "Rybnik",
"Angielski": "Angielski C1"
}
]
此图像显示了在对 List.json 文件进行一次更改期间,一个文档被添加了 2 次。
我已经在 stackoverflow 论坛上查看了与重复相关的类似主题。但是,它们都没有解决我的问题。 就我而言,每个文档都上传了 1 次以上。上传 100 个此类文档将向数据库添加 200 条记录。 请帮忙
【问题讨论】: