为什么mongoDb不起作用?

为什么mongoDb不起作用?,mongodb,sorting,mongo-shell,Mongodb,Sorting,Mongo Shell,我有一个db,有3000个值,每个值包含大约10个字段,现在当我尝试按特定字段对值进行排序时,它只排序到一个极限并显示一个值。 就像这里的Robomongo一样,我试图对一个名为NET_TURNOV的值进行排序,您可以在照片9990中看到这个值 我使用的命令是: db.getCollection('col').find({}).sort({"NET_TURNOV": -1}) 然而,在下一张照片中,你可以看到同样的db具有更高的净图诺夫值,这就是为什么会发生这种情况。 这是下一张照片 您的净

我有一个db,有3000个值,每个值包含大约10个字段,现在当我尝试按特定字段对值进行排序时,它只排序到一个极限并显示一个值。 就像这里的Robomongo一样,我试图对一个名为NET_TURNOV的值进行排序,您可以在照片9990中看到这个值 我使用的命令是:

db.getCollection('col').find({}).sort({"NET_TURNOV": -1})

然而,在下一张照片中,你可以看到同样的db具有更高的净图诺夫值,这就是为什么会发生这种情况。 这是下一张照片

您的净图诺夫(以及所有其他数字)存储为字符串。这就解释了“奇怪”的排序

数字
22
大于数字
9
,但字符串
“22”
小于字符串
“9”
(因为它们是逐字符比较的)


如果你想对数字进行任何数字y操作,比如排序、求最大值、加/减等,那么数字应该存储为数字。也就是说“总是”。在我的例子中,
时间戳
字段是一个数字
双值
,但不知何故Mongo将其解释为一个字符串。我不知道为什么,但在从Mongo3.2升级到3.4之后,它就消失了

更新

好吧,我终于搞定了

正确的

model.find({query})
.sort('timestamp')
.exec(function(err, docs){
   //docs sorted on both systems
});
model.find({query})
.sort('timestamp')
.then(function(docs){
   //docs in right order
})
.catch(function(error){});
正确的

model.find({query})
.sort('timestamp')
.exec(function(err, docs){
   //docs sorted on both systems
});
model.find({query})
.sort('timestamp')
.then(function(docs){
   //docs in right order
})
.catch(function(error){});

是的,我想当我点击robomongo中的view document时,它会显示“NET_TURNOV”中的值:“xxxx”哇,谢谢,但是,如果没有存储为数字的选项,那么我该如何对其进行排序。@Alpitand:那你就不走运了。谢谢,你帮了我很多忙,我想我必须重新编码才能从Scratch中构建我的数据库。通过添加,我没有发现任何不同之处,执行官