将所有点击添加到一个文档而不是每个都有自己的文档

时间:2018-01-10 14:10:33

标签: javascript node.js mongodb

当我运行此代码时,我得到反馈,即已将单击添加到数据库中,这很好。问题是我每次点击它都会为每次点击创建一个单独的文档。最终,我希望每次点击都在一个集合下的同一个文档中。我需要在代码中添加什么或者需要在终端中运行什么。感谢。



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);
  });
});




1 个答案:

答案 0 :(得分:0)

根据文件:

  

db.collection.save()根据文档参数更新现有文档或插入新文档。

稍后,它指定:

  

如果文档中不包含_id字段,则save()方法会调用insert()方法。在操作期间,mongo shell将创建一个ObjectId并将其分配给_id字段。

然而,

  

如果文档包含_id字段,则save()方法等同于update,其中up​​sert选项设置为true,查询谓词位于_id字段。

因此,您应该找到文档_id,并将其添加到您尝试click的{​​{1}}对象:

save