MongoDB插入和排序

3

你好,我正在尝试同时插入和排序数据,但是无效。有人对此有经验吗?

我的示例代码如下:

  collection.insert({id:"224535353", type:postValue, date:new Date},  {safe:true},{$sort: { id: -1 }}, function(err, result){
                        console.log(result);

    });

解决方案:

错误在于我试图对相同的id进行排序。

collection.find({id:req.session.loggedIn},{sort:{date:-1}}).toArray(function(err, posts) { 

            console.log(posts);
});
2个回答

2

你需要基于查找排序,而不是插入排序。基本上,你不需要关心数据的存储方式,如果你需要按照某种顺序检索数据,那么这就是MongoDB需要解决的问题,因此在插入时不需要进行排序。

  collection.insert({id:"224535353", type:postValue, date:new Date},                      
                       {safe:true},function(err, result){console.log(result);});

而后通过排序找到
collection.find({}).sort({id:-1})

我将查询并排序指定的数据。我有许多具有相同id的对象。collection.find({id:req.session.loggedIn}).sort:({id:-1}).toArray(function(err, posts) { console.log(posts);} - machu pichu
是的,但您查询特定ID,因此假设req.session.loggedIn为5,则find返回的所有文档都将具有id = 5,因此按id对它们进行排序在结果中不会改变任何内容,因为它们都具有相同的id。 - Trudbert

0

我不太确定你在这里尝试实现什么,或者你是否在使用Monk,但是在执行插入操作时MongoDB不会返回集合甚至文档数组,它只会返回一个writeResult,你可以在这里看到...http://docs.mongodb.org/manual/reference/method/db.collection.insert/

你可以做的是先进行插入操作,然后运行一个查找查询,就像这样...

collection.insert({id:"224535353", type:postValue, date:new Date},  {safe:true}, function(err, writeResult){
       collection.find({},{sort:{id:-1}}, function(e, result){
           console.log(result)
       })
});

你好,感谢您的回复。我正在使用本地 MongoDB。我在代码的其他位置使用了 find 方法。将数据插入到 MongoDB 中是有效的,但现在我想查询已插入的数据并进行排序。我尝试了以下代码:collection.find({id:req.session.loggedIn},{sort:{id:-1}}).toArray(function(err, posts) {console.log(posts); } 但它没有起作用。 - machu pichu
@machupichu 为什么要查询特定的ID,然后再尝试按照它进行排序?所有ID值find({id:req.session.loggedIn})将是相同的(即req.session.loggedIn)。 - Trudbert
嗨,所有的值都不相同。我查询具有(req.session.loggedIn)的原始数据。我遍历数据并输出它。 - machu pichu
我认为你在某种程度上混淆了insertfind的用法。 - martskins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接