具有多个条件的mongoose findOne查询和“$ gt”未返回正确的结果

时间:2017-08-16 15:00:54

标签: node.js mongodb mongoose

我被猫鼬难住了。我试图找到一个匹配instanceId和currentQuantity的记录。我可以看到数据库中的记录,我知道currentQuantity是数字而不是字符。但我的查询找不到这些记录。 我试过这个:

titleRecords.findOne({"titleByDate.instanceId": 100156
         })

结果:返回查询,但不包括我需要的第二个条件。所以我尝试了这个:

titleRecords.findOne({"titleByDate.instanceId": 100156
                                 , "titleByDate.currentQuantity": {"$gt": 0}
      })

结果:不返回我正在寻找的记录(根本不返回任何记录)

我用额外的括号尝试了这个:

titleRecords.findOne({{"titleByDate.instanceId": 100156
                                 , "titleByDate.currentQuantity": {"$gt": 0}
      }})

结果:我收到第一个{意外

的错误

我试过这个:

titleRecords.findOne({"titleByDate.instanceId": 100156
                                 , "titleByDate.currentQuantity": {$gt: 0}
      })

结果:不返回任何记录。我认为在“$ gt”附近需要引用,但老实说,我对mongoose语法很困惑,并且在我的生活中找不到任何关于如何在mongoosejs.com上执行此操作的文档

根据请求,这里有三个示例记录。上面的第一个查询返回中间记录 - 其他任何一个都没有返回任何内容。如果这不是分享数据的正确格式,我很抱歉 - 请告诉我是否有更好的方法

{
    "_id": {
        "$oid": "59936"
    },
    "titleByDate": {
        "currentQuantity": 4,
        "title": "ABC",
        "instanceId": 150351
    },
    "__v": 0
},

{
    "_id": {
        "$oid": "54936"
    },
    "titleByDate": {
        "currentQuantity": 2,
        "title": "QPR",
        "instanceId": 100156
    },
    "__v": 0
},


{
    "_id": {
        "$oid": "51936"
    },
    "titleByDate": {
        "currentQuantity": 0,
        "title": "QQQ",
        "instanceId": 143159
    },
    "__v": 0
}

我的模特陈述:

var mongoose = require('mongoose');

mongoose.Promise = global.Promise;

// define the schema for a play
var titleListingSchema = mongoose.Schema({
    title         : {
        titleId      : Number,
        title        : String,
     },
    titleByDate :{
        instanceId      : Number,
        title        :String,
        currentQuantity: Number
    }
 });
module.exports = mongoose.model('titleListing', titleListingSchema);

0 个答案:

没有答案