Mongodb查找()使用节点不返回所有文件(奇怪的行为)

我使用meteor与节点来检索从mLab上托pipe的MongoDB集合中的车辆列表。 我最近注意到,我的js应用程序中的find()没有返回集合中的所有匹配文档。 使用Mongo shell和mLab上的search都会返回正确数目的结果。

以下是集合中的示例文档,应该是这样的:

 { "_id": "VIN", "updatedOn": "Fri Aug 11 2017 11:27:40 GMT-0400 (EDT)", "clientId": "1001", "crushVersion": "v.3.42", "yardName": "YARD NAME", "yardCity": "CITY", "yardState": "STATE", "stockNumber": "STK123447", "iStatus": "0", "location": "YARD", "year": "2003", "make": "AUDI", "model": "A6", "vehicleRow": "32", "yardDate": "2017-08-10T18:09:38.363", "batchNumber": "STK123447", "lastUpdate": "08/11/2017 01:31:31 AM", "color": "SILVER", "vin": "VIN", "reference": "", "milage": "24" } 

…和一个如预期的那样返回的:

 { "_id": "VIN", "updatedOn": "Fri Aug 11 2017 11:27:40 GMT-0400 (EDT)", "clientId": "1112", "crushVersion": "v.3.42", "yardName": "YARD NAME", "yardCity": "CITY", "yardState": "STATE", "stockNumber": "STK02752", "iStatus": "0", "location": "YARD", "year": "2003", "make": "AUDI", "model": "A6", "vehicleRow": "600", "yardDate": "2017-07-20T10:28:54.407", "batchNumber": "STK02752", "lastUpdate": "08/11/2017 08:30:30 AM", "color": "GRAY", "vin": "VIN", "reference": "", "milage": "1" } 

…和“查找”的JS代码;

 MongoClient.connect( url, Meteor.bindEnvironment((err, db) => { if (err) throw new Meteor.Error(err) const inv = db.collection('inventory'), userId = user._id, picks = _picks, /* _picks comes from a user-populated form as an array of objects. */ makes = picks.map(pick => { return pick.make.toUpperCase() }), models = picks.map(pick => { return pick.model.toUpperCase() }), yards = user.profile.yards.map(yard => { return yard.yard }) if (picks.length > 0) { inv .find({ $or: user.profile.picks.map(p => ({ year: { $gte: p.minYear, $lte: p.maxYear } })), make: { $in: makes }, model: { $in: models }, yardName: { $in: yards } }) .toArray( Meteor.bindEnvironment((err, docs) => { if (err) throw new Meteor.Error(err) console.log(docs) }) ) } }) ) 

现在这是怪异的部分。 所有返回的文件都有一个2017-7-31或更大的码date。 这可能是一个巧合,但我不这么认为。 我的collections有大约21000个文档,所有查询都显示相同的行为。

我看了这个问题的链接 ,但我的一些查询只有一个或两个结果,所以我不认为这是一个缓冲区溢出问题。

谢谢你提供的所有帮助!

更新:我做了一个小testing文件,看看是否有从我的find()链可能是搞乱查询。 以下是代码:

 const MongoClient = require('mongodb').MongoClient, url = 'mongodb://user:password@ipaddress/dbname' MongoClient.connect(url, (err, db) => { const inv = db.collection('inventory') inv.find({ year: '2003', model: 'A6' }).toArray((err, docs) => { if (err) throw new Error(err) console.log(docs) db.close() }) }) 

这应该返回五个文件,但只返回两个…所有与一个yardDate2017-07-31

更新:

我添加了“缺失”结果和“find”结果。

原来……当我把我的数据库移到mLab时,我没有在应用程序中find所有的URL并改变它们。 原来的数据库还在说话,所以我得到了“旧”的结果。