我想在Mongoose模式中使用$(从另一应用程序以这种方式格式化数据),如下所示:
const Personal = sequelize.define('profile_personals', {
ID: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
biography: {
type: Sequelize.STRING
},
fk_user_id : {type: Sequelize.INTEGER},
},
{
timestamps: false
});
当我尝试这样做时,并运行该功能(使用PUT路线):
const mySchema = new mongoose.Schema({
$meta1: {
type: String,
trim: true,
},
$meta2: {
type: String,
trim: true,
},
normalKey3: {
type: String,
trim: true,
}
});
我收到以下错误。如果我将$替换为_(例如_meta1),则可以使用。 这是Mongoose还是Mongo问题? $表示什么不起作用?
错误:
exports.updateMe = async (req, res) => {
const xyz = await MySchema.findOneAndUpdate({normalKey3: req.body.normalKey3}, req.body,
{
upsert: true,
new: true,
runValidators: true
}).exec();
res.status(200).json(xyz);
};
答案 0 :(得分:2)
$是MongoDB中的保留关键字 MongoDB名称有限制
对字段名称的限制 字段名称不能包含空字符。 顶级字段名称不能以美元符号($)开头。 否则,从MongoDB 3.6开始,服务器允许存储包含点(即。)和美元符号(即$)的字段名称。
您可以在此处找到更多信息 访问https://docs.mongodb.com/manual/reference/limits/