【问题标题】:Mongodb $in to get result in the same order as in the arrayMongodb $in 以与数组中相同的顺序获取结果
【发布时间】:2016-05-14 19:01:47
【问题描述】:

我有一个包含 mongodb 集合 ID 的数组

array = [ '573163a52abda310151e5791',
         '57358e5dbd2f8b960aecfa8c',
         '573163da2abda310151e5792' ]

我希望结果与数组中的顺序相同,但我得到的是

...91
...92
...8c

有没有办法以相同的顺序获得结果?

   db.coll.find({
                _id: {
                    $in: array
            }
        }).toArray(function(err, docs) {
            res.send(docs)
        });

【问题讨论】:

  • 奇怪的是,您以不同的顺序获取它,因为在我的测试中,无论我在数组中设置它们的顺序如何,我都以完全相同的顺序获取它们。会不会是你的 _id 字段没有被索引?

标签: javascript node.js mongodb


【解决方案1】:

我只是在尝试这种方式,在 mongodb 中使用 forEach,见下文

这是我在 mongodb 中的原始订单

{
"_id" : ObjectId("5736d1210a39c2547cb9d90e"),
"name" : "karthi",
"dateCreated" : ISODate("2016-05-14T17:15:27.471Z")}
{
"_id" : ObjectId("5736d1380a39c2547cb9d90f"),
"name" : "ram",
"dateCreated" : ISODate("2016-05-15T17:15:27.471Z")}
{
"_id" : ObjectId("5736d1420a39c2547cb9d910"),
"name" : "kala",
"dateCreated" : ISODate("2016-05-16T17:15:27.471Z")}

试试这个方法

["karthi","kala","ram"].forEach(function(data){
db.getCollection('users').find({"name":data}).forEach(function(data1){
    print(data1)
})
})

我的输出显示这个顺序

karthi 
kala
ram

我认为这对你有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 2015-08-26
    相关资源
    最近更新 更多