node.js - Mongoose findOne 不适用于特定查询,但适用于其他查询

标签 node.js mongodb mongoose nosql

我正在尝试使用 mongoose 来处理 mongoDB,这是数据库中的示例元素:

{
  "_id": {
    "$oid": "59bc026679f3a71ed02e4812"
  },
  "name": "Le Ruban blanc",
  "customID": 80074,
  "description": "Un village protestant de l'Allemagne du Nord à la veille de la Première Guerre mondiale (1913/1914). L'histoire d'enfants et d'adolescents d'une chorale dirigée par l'instituteur du village et celle de leurs familles : le baron, le régisseur du domaine, le pasteur, le médecin, la sage-femme, les paysans... D'étranges accidents surviennent et prennent peu à peu le caractère d'un rituel punitif. Qui se cache derrière tout cela ?",
  "poster": "http://sokrostream.com/wp-content/uploads/2013/09/1367017617_face.jpg",
  "genres": [
    "Drame"
  ],
  "country": "Français",
  "releaseYear": 2009,
  "quality": "DVDRip"
}

我使用 mongoose 进行查询,但以下查询返回 null。

collection.findOneAndUpdate({ "customID": 80074 }, { $inc: { "views" : 1 } }, cb)

请注意,当我使用 customID 以外的任何内容时,它都可以工作。例如,以下查询确实有效。

collection.findOneAndUpdate({ "name": "Le Ruban blanc" }, { $inc: { "views" : 1 } }, cb)

我希望你能看到这个问题,我几天前刚刚开始使用 mongoDBmongoose 所以这个错误可能是非常基本的。非常感谢任何帮助!

根据要求,这里是架构:

new mongoose.Schema({
name: {type: String, required: true},
customID: {type: String, required: true, unique: true},
description: {type: String, default: 'No description available'},
poster: {type: String, default: 'default'},
genres: {type: [String], default: ['Unknown']},
country: {type: String, default: 'Unknown'},
releaseYear: {type: Number, default: 2000},
quality: {type: String, default: 'HD-720p'});

这是完整的 Mongoose 代码:

collection.findOneAndUpdate({"customID": 80074},
    { $inc: { "views" : 1 } },
    {projection: projection},
    (err, element) => {
        if (err) return res.status(400).send(err);
        res.status(200).send(element);
    });

最佳答案

在您的架构中,您有customID:{type:String}。而您正试图在其中查找一个整数

请将customID的类型更改为Number,例如customID: {type: Number}

正确定义架构非常重要。 Read more about schema type

关于node.js - Mongoose findOne 不适用于特定查询,但适用于其他查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46254440/

相关文章:

javascript - 用express更新了文档

javascript - 如何使用 Passport.js 循环遍历用户并将用户列表打印到 DOM 中

javascript - Mongoose 嵌入式文档对象是 Mongoose 对象吗?

node.js - 如何授权安装Electron应用程序?

javascript - 在 ubuntu 上安装 node-gyp 时出错

node.js - 让 https express Node 应用程序在共享主机上工作

node.js - Mongoose 中干净的版本控制/更改历史记录实现

javascript - waitFor() 找不到页面上显示的元素

javascript - Mongoose findOneAndUpdate 以不同顺序返回参数

javascript - 等待保存后再继续该功能