Mongodb учебник не сортировка поле {ч} - PullRequest
0 голосов
/ 18 сентября 2018

Я только что играл с простым учебником mongodb, и когда я пытаюсь сортировать, он не работает:

db.inventory.insertMany([
  { item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } },
  { item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },
  { item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } }
])

, а затем

> db.inventory.find().sort({h:1})
{ "_id" : ObjectId("5ba02d6cc29157a810f9478b"), "item" : "journal", "qty" : 25, "tags" : [ "blank", "red" ], "size" : { "h" : 14, "w" : 21, "uom" : "cm" } }
{ "_id" : ObjectId("5ba02d6cc29157a810f9478c"), "item" : "mat", "qty" : 85, "tags" : [ "gray" ], "size" : { "h" : 27.9, "w" : 35.5, "uom" : "cm" } }
{ "_id" : ObjectId("5ba02d6cc29157a810f9478d"), "item" : "mousepad", "qty" : 25, "tags" : [ "gel", "blue" ], "size" : { "h" : 19, "w" :  22.85, "uom" : "cm" } }

И вот "h"возвращается как 14, 27,9, 19, который не отсортирован.Есть идеи, что я делаю не так?

1 Ответ

0 голосов
/ 18 сентября 2018

Сортировка работает, только сейчас, как вы ожидаете.Документы не содержат поля верхнего уровня h, поэтому все документы отсортированы по null.

Вместо этого вам нужно будет отсортировать по size.h с использованием точечной нотации .Например:

db.inventory.find().sort({ "size.h" : 1 } )
{ "_id" : ObjectId("5ba03209ebb1a32e62853cdf"), "item" : "journal", "qty" : 25, "tags" : [ "blank", "red" ], "size" : { "h" : 14, "w" : 21, "uom" : "cm" } }
{ "_id" : ObjectId("5ba03209ebb1a32e62853ce1"), "item" : "mousepad", "qty" : 25, "tags" : [ "gel", "blue" ], "size" : { "h" : 19, "w" : 22.85, "uom" : "cm" } }
{ "_id" : ObjectId("5ba03209ebb1a32e62853ce0"), "item" : "mat", "qty" : 85, "tags" : [ "gray" ], "size" : { "h" : 27.9, "w" : 35.5, "uom" : "cm" } }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...