1

I run the following command from a JavaScript function in the MongoDB-Shell:

db._adminCommand( {listDatabases: 1}).databases

That gives me:

[
    {
        "name" : "local",
        "sizeOnDisk" : 83886080,
        "empty" : false
    },
    {
        "name" : "time",
        "sizeOnDisk" : 83886080,
        "empty" : false
    },
    {
        "name" : "event",
        "sizeOnDisk" : 83886080,
        "empty" : false
    },
    {
        "name" : "admin",
        "sizeOnDisk" : 1,
        "empty" : true
    },
    {
        "name" : "test",
        "sizeOnDisk" : 1,
        "empty" : true
    }
]

Is it somehow possible to sort the documents in that array by their value in the field name?

Finally I'd like to get:

[
    {
        "name" : "admin",
        "sizeOnDisk" : 1,
        "empty" : true
    },
    {
        "name" : "event",
        "sizeOnDisk" : 83886080,
        "empty" : false
    },
    {
        "name" : "local",
        "sizeOnDisk" : 83886080,
        "empty" : false
    },
    {
        "name" : "test",
        "sizeOnDisk" : 1,
        "empty" : true
    },
    {
        "name" : "time",
        "sizeOnDisk" : 83886080,
        "empty" : false
    }
]
Edward
  • 4,453
  • 8
  • 44
  • 82
  • as neil-lunn referenced the link: run command return a document as result and you cant deal with it like a cursor You could use javascript to do the job: var result = db._adminCommand( {listDatabases: 1}).databases; result.sort(function(a,b) { var nameA = a.name.toLowerCase(); var nameB = b.name.toLowerCase(); //sort string ascending if (nameA < nameB) return -1 if (nameA > nameB) return 1 return 0; }); – Disposer Jan 23 '15 at 10:39

1 Answers1

2

Use sort method:

db._adminCommand( {listDatabases: 1}).databases.sort(function(item1, item2){return item1.name > item2.name})
Alex Barannikov
  • 304
  • 2
  • 8