当我运行此代码时,我得到反馈,即已将单击添加到数据库中,这很好。问题是我每次点击它都会为每次点击创建一个单独的文档。最终,我希望每次点击都在一个集合下的同一个文档中。我需要在代码中添加什么或者需要在终端中运行什么。感谢。
console.log('Server-side code running');
const express = require('express');
const MongoClient = require('mongodb').MongoClient;
const app = express();
app.use(express.static('public'));
let db;
const url = 'mongodb://localhost:27017/clicks';
MongoClient.connect(url, (err, database) => {
if(err) {
return console.log(err);
}
db = database;
// start the express web server listening on 8080
app.listen(8080, () => {
console.log('listening on 8080');
});
});
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
app.post('/clicked', (req, res) => {
const click = {clickTime: new Date()};
console.log(click);
console.log(db);
db.collection('clicks').save(click, (err, result) => {
if (err) {
return console.log(err);
}
console.log('click added to db');
res.sendStatus(201);
});
});
app.get('/clicks', (req, res) => {
db.collection('clicks').find().toArray((err, result) => {
if (err) return console.log(err);
res.send(result);
});
});

答案 0 :(得分:0)
根据文件:
db.collection.save()
根据文档参数更新现有文档或插入新文档。
稍后,它指定:
如果文档中不包含
_id
字段,则save()
方法会调用insert()
方法。在操作期间,mongo shell将创建一个ObjectId并将其分配给_id字段。
然而,
如果文档包含
_id
字段,则save()
方法等同于update
,其中upsert选项设置为true,查询谓词位于_id字段。
因此,您应该找到文档_id
,并将其添加到您尝试click
的{{1}}对象:
save