没有_id的Mongoose数据保存

我正在使用mongoose和node.js应用程序。 logging中不需要_id字段。 我正在使用此代码来保存没有_id字段的logging。 但它是给错误的

文件在保存之前必须有一个_id

var mongoose = require('mongoose'); var Schema = mongoose.Schema; var PlayerSchema = new Schema({ player_id : { type: Number }, player_name : { type: String }, player_age : { type: Number }, player_country : { type: String } } , { _id: false } ); var Player = mongoose.model('Player', PlayerSchema ); var athlete = new Player(); athlete.player_id = 1; athlete.player_name = "Vicks"; athlete.player_age = 20; athlete.player_country = "UK"; athlete.save(function(err) { if (err){ console.log("Error saving in PlayerSchema"+ err); } }); 

我正在使用mongoose版本3.8.14

不幸的是,你不能跳过拥有文档的主键,但你可以覆盖主键的内容,你可以为每个文档定义自己的主键。

尝试下面的模式相同。

 var PlayerSchema = new mongoose.Schema({ _id : { type: Number }, player_name : { type: String }, player_age : { type: Number }, player_country : { type: String }, 

});

我用_id取代了你的player_id 。 现在您可以控制文档的主键,系统不会为您生成密钥。

有一些插件也可以autoincremet键的autoincremethttps://github.com/chevex-archived/mongoose-auto-increment 。 你也可以试试这些。

此外,关于您遇到的错误:任何文档是一个对象,应该被包裹在curly brackets您不能在同一个文档中定义两个独立的对象。 所以你得到这个错误。

没有_id保存数据是不可能的