liurenchaxin/docs/n8n_mongodb_upsert_config.md

59 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# n8n MongoDB去重配置
## 方案1: JS函数 + MongoDB Upsert
### JS函数节点配置
使用 `scripts/n8n_minimal_news.js` 的代码,只做基本处理和本批次去重。
### MongoDB节点配置
1. **操作类型**: Update
2. **Collection**: articles
3. **Update Key**: title (用标题作为唯一键)
4. **Upsert**: 启用 ✅
5. **Update Document**:
```json
{
"$setOnInsert": {
"id": "={{$json.id}}",
"title": "={{$json.title}}",
"published_time": "={{$json.published_time}}",
"source_url": "={{$json.source_url}}",
"created_at": "={{new Date().toISOString()}}"
},
"$set": {
"last_seen": "={{new Date().toISOString()}}"
}
}
```
## 方案2: 纯MongoDB节点去重
### MongoDB节点配置
1. **操作类型**: Update Many
2. **Collection**: articles
3. **Filter**: `{"title": "={{$json.title}}"}`
4. **Upsert**: 启用 ✅
5. **Update**:
```json
{
"$setOnInsert": {
"title": "={{$json.title}}",
"published_time": "={{$json.published_time}}",
"source_url": "={{$json.source_url}}",
"created_at": "={{new Date().toISOString()}}"
}
}
```
## 推荐方案
使用**方案1**,因为:
- JS函数生成连续的ID
- MongoDB只负责去重插入
- 逻辑清晰,易于调试
## 测试步骤
1. 第一次运行:应该插入所有新文章
2. 第二次运行应该0条插入全部跳过
3. 检查数据库:确认没有重复标题