所有! 我的文件有这样的结构:
{
fname: value,
lname: value,
city: value
}
当我使用find()方法时,我得到默认顺序fname,lname,city的结果。 但是我希望得到其他字段顺序的结果,例如:city,fname,lname。 mongodb是否允许在结果中排序字段?
答案 0 :(得分:1)
是和否。要真正进行这种操作,您需要aggregation framework。即便如此,因为你必须重命名"这些字段是为了改变他们的顺序。这是因为有一般的优化措施可以复制"复制"来自一个"管道的内容"阶段到另一个。这被认为是最佳的。
但你可以随时这样做:
db.collection.aggregate([
{ "$project": {
"tcity": "$city",
"tfname": "$fname",
"tlname": "$lanme"
}},
{ "$project": {
"city": "$tcity",
"fname": "$tfname",
"lname": "$tlname"
}}
])
非常做作,但这就是你必须这样做的方式。或者只是使用单个投影进行"重命名"字段按您想要的顺序,然后只是"重命名"再次在代码中。
当然,您的代码可以简单地重新映射"查询结果中的字段名称。
但基本的观点是MongoDB本身"保留"字段的原始顺序为"优化"它们如何存储,否则不会弄乱输出。如果您愿意,但您需要按照所示步骤执行此操作。
答案 1 :(得分:1)
您可以使用.sort()
。例如:
db.stocks.find().sort( { ticker: 1, date: -1 } )
有关详细信息,请参阅http://docs.mongodb.org/manual/reference/method/cursor.sort/
答案 2 :(得分:0)
我假设您指的是Mongo shell中显示的输出?如果是这样,你可以将返回的输出分配给一个变量(光标,我相信),然后逐步浏览光标,同时以你喜欢的任何顺序输出各个字段变量。