Mongoose $不在nodeJS中工作
我创build了一个包含如下所示的一些操作细节的集合
{ "_id" : ObjectId("580776455ecd3b4352705ec4"), "operation_number" : 10, "operation_description" : "SHEARING", "machine" : "GAS CUTT" } { "_id" : ObjectId("580776455ecd3b4352705ec5"), "operation_number" : 50, "operation_description" : "EYE ROLLING -1", "machine" : "E-ROLL-1" } { "_id" : ObjectId("580776455ecd3b4352705ec6"), "operation_number" : 60, "operation_description" : "EYE ROLLING -2", "machine" : "E-ROLL-1" } { "_id" : ObjectId("580776455ecd3b4352705ec7"), "operation_number" : 70, "operation_description" : "EYE REAMING", "machine" : "E-REAM" } { "_id" : ObjectId("580776455ecd3b4352705ec8"), "operation_number" : 80, "operation_description" : "COLD CENTER HOLE PUNCHING", "machine" : "C-PNCH-1" } { "_id" : ObjectId("580776455ecd3b4352705ec9"), "operation_number" : 150, "operation_description" : "READY FOR HT", "machine" : "RHT" }
使用mongoose模型如下
var mongoose = require('mongoose'); var uniqueValidator = require('mongoose-unique-validator'); var Promise = require("bluebird"); mongoose.Promise = Promise; var Schema = mongoose.Schema; var operationSchema = new Schema({ operation_number: { type: String, required: [ true, "Please select valid operation code" ]unique : true }, operation_description: { type: String, required: [ true, "Please select valid operation description" ] } }, { strict: false }); var operation = mongoose.model('operation', operationSchema); operationSchema.plugin(uniqueValidator, { message: 'Error, {PATH} {VALUE} already exist.' }); // make this available to our users in our Node applications module.exports = operation;
现在如果我使用db.operations.find({operation_number : {$in : [10, 50, 60]}})
查询这个集合operations
db.operations.find({operation_number : {$in : [10, 50, 60]}})
它可以工作,但是当涉及到mongoose它不起作用。
var mc = require("./data-models/operation") var filter = {'operation_number': {$in : [10, 50, 60] } } console.log(filter) mc.find(filter, function(me, md){ console.log(me, md) // prints null [] })
即使我已经尝试删除operation_number
周围的单引号
请帮忙找方法!
您的模式表示operation_number
是一个string:
operation_number: { type: String, <-- here ... }
因此,Mongoose会将$in
数组中的数字转换为string。
但是,数据库中的数据是数字的,这是不同的types。 您应该更改您的模式,以便operation_number
成为一个Number
:
operation_number: { type: Number, ... }