Mongoose findOne不适用于特定查询,但适用于其他查询

时间:2017-09-16 13:28:52

标签: node.js mongodb mongoose nosql

我正在尝试使用mongoDB使用mongoose,这是db中的示例元素:

{
  "_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)

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

如所述,这里的架构:

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

这里是完整的猫鼬代码:

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

1 个答案:

答案 0 :(得分:1)

在您的架构中,您拥有customID: {type: String}。而您正试图在其中找到integer

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

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