den nächsten Code Gegeben gegeben:Knoten-Mongo-native und Mongo-Shell liefern unterschiedliche Ergebnisse die gleiche Abfrage
var daysToBeOld = 7;
var dateOlder = moment().subtract(daysToBeOld, 'days').toDate();
MongoClient.connect(mongouri, function(err, db) {
console.log('Filtering pending topics before: %s', dateOlder);
var conditions = {status: 'pending', updated: {$lt: dateOlder}};
console.log('Using the next filters: %j', conditions);
var topicsCol = db.collection('topics');
topicsCol.find(conditions).toArray(function (err, topics) {
if (err) {
console.log(err);
}
console.log("found %j topics", topics);
callback(err, topics);
});
});
ich die nächsten console.log Ergebnisse. Wie Sie das Ergebnis sehen kann, ist ein leeres Array:
Filtering pending topics before: Tue Feb 21 2017 15:13:35 GMT+0000 (UTC)
Using the next filters: {"status":"pending","updated":{"$lt":"2017-02-21T15:13:35.191Z"}}
found [] topics
Wenn ich die gleiche Abfrage ausführen Mongo-shell es gibt ein Dokument:
Ie:
> db.topics.find({"status":"pending","updated":{"$lt":"2017-02-21T15:13:35.191Z"}})
{ "_id" : "076bbbc0-e318-11e6-9375-e94b488c7ad8", "status" : "pending", "text" : "lalalalalla", "topicType" : "Información", "member" : "NoUsuarioForus", "service" : "Limpieza", "idCard" : "", "receiveAnswer" : "1", "toc" : "1", "date" : ISODate("2016-08-31T16:36:45Z"), "sender" : { "name" : "alalalal", "email" : "[email protected]" }, "__v" : 0, "deleted" : false, "answered" : true, "firstAnswerTime" : 15614529, "updated" : "2016-02-01T17:28:34.868Z"
Warum ich bin Erhalten keine Ergebnisse in der Abfrage von Node-Mongo-native gestartet?
Meine node-mongo-native Version ist 2.2.24.
Ich habe begonnen, Mungo zu verwenden, aber wechselte zu Node-Mongo-native, um diese Abfrage zu machen, weil ich dachte, dass das ein Problem mit Mungo war. Ich werde mein Schema schreiben Btw, wenn es klären hilft, warum es nicht funktioniert:
topic.js:
var mongoose = require('mongoose');
var mongoosePaginate = require('mongoose-paginate');
var Schema = mongoose.Schema;
var uuid = require('node-uuid');
var xss = require('xss');
var TopicSchema = new Schema({
_id: {
type: String,
default: uuid.v1
},
status: {
type: String,
// open: When the message is created first time or not exists
// pending: The issue has been answered by some employee. Waiting for answer from the customer
// closed: The issue has been resolved
enum: ['open', 'closed', 'pending']
},
sender: {
name: String,
email: {
type: String,
required: true,
}
},
text: {
type: String,
required: true
},
date: {
type: Date,
default: Date.now
},
updated: {
type: Date
},
// If the topic is answered by an user different than creator it will be true
answered: {
type: Boolean,
default: false
},
firstAnswerTime: Number,
centerId: String,
topicType: String,
member: String,
service: String,
idCard: String,
receiveAnswer: String,
toc: String,
satisfaction: Number,
deleted: {
type: Boolean,
default: false
}
});
TopicSchema.plugin(mongoosePaginate);
TopicSchema.pre('save', function(next) {
this.updated = new Date();
this.text = xss(this.text);
next();
});
module.exports = mongoose.model('Topic', TopicSchema);
Ich habe mein Modell Mungo definiert. Ich werde die Frage aktualisieren. – Genar
'aktualisierten' Feld ist ein String und in Ihrer Anwendung werden Sie es als ein Datum abfragen, die nichts ergeben wird, aber wenn Sie es in Mongo Shell unter Verwendung einer Zeichenfolge abfragen, wird das Dokument korrekt zurückgegeben. – chridam
Wenn Sie sehen, dass das "aktualisierte" Feld eine Zeichenkette ist, haben Sie versucht, es als eine Variable abzufragen, d. H. Die Variable in 'var dateOlder = moment() ändern. Subtract (daysToBeOld, 'days'). ToISoString()'? – chridam