Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB find()命令子对象_Mongodb - Fatal编程技术网

MongoDB find()命令子对象

MongoDB find()命令子对象,mongodb,Mongodb,我知道在对集合执行find()时可以使用$orderBy。但是我的集合包含其他对象,如何对这些对象进行排序?例如: books: [{ title: 'book 1', authors: [ { name: 'jim' }, { name: 'bob' }, ] }, { title: 'book 2', authors: [ { name: 'steve' }, { name: 'joe' }, ] }]; 我想做db.coll

我知道在对集合执行find()时可以使用$orderBy。但是我的集合包含其他对象,如何对这些对象进行排序?例如:

books: [{
  title: 'book 1',
  authors: [
     { name: 'jim' },
     { name: 'bob' },
  ]
}, {
  title: 'book 2',
  authors: [
     { name: 'steve' },
     { name: 'joe' },
  ]
}];

我想做db.collections.find();让它把所有的书按顺序归还(我知道如何使用$orderBy进行排序,但我也希望对作者进行排序。

我不完全确定您需要什么。MongoDB返回完整的文档,因此所有书籍的作者列表必须在客户端或使用进行编译。不能使用简单的查询进行排序,因为排序操作之前需要投影

此外,您可能希望有一个不同的作者列表,否则一些作者会在列表中出现几十次

使用聚合框架,您可以执行以下操作:

db.books.aggregate(
   {"$unwind" : "$authors"},              // unwind the array
   {$group : {"_id" : "$authors.name"} }, // distinct
   {$sort : {"_id" : 1}});                // the actual sort

我不完全确定您需要什么。MongoDB返回完整的文档,因此所有书籍的作者列表必须在客户端或使用进行编译。不能使用简单的查询来完成,因为它需要在排序操作之前进行投影

此外,您可能希望有一个不同的作者列表,否则一些作者会在列表中出现几十次

使用聚合框架,您可以执行以下操作:

db.books.aggregate(
   {"$unwind" : "$authors"},              // unwind the array
   {$group : {"_id" : "$authors.name"} }, // distinct
   {$sort : {"_id" : 1}});                // the actual sort

我不完全确定您需要什么。MongoDB返回完整的文档,因此所有书籍的作者列表必须在客户端或使用进行编译。不能使用简单的查询来完成,因为它需要在排序操作之前进行投影

此外,您可能希望有一个不同的作者列表,否则一些作者会在列表中出现几十次

使用聚合框架,您可以执行以下操作:

db.books.aggregate(
   {"$unwind" : "$authors"},              // unwind the array
   {$group : {"_id" : "$authors.name"} }, // distinct
   {$sort : {"_id" : 1}});                // the actual sort

我不完全确定您需要什么。MongoDB返回完整的文档,因此所有书籍的作者列表必须在客户端或使用进行编译。不能使用简单的查询来完成,因为它需要在排序操作之前进行投影

此外,您可能希望有一个不同的作者列表,否则一些作者会在列表中出现几十次

使用聚合框架,您可以执行以下操作:

db.books.aggregate(
   {"$unwind" : "$authors"},              // unwind the array
   {$group : {"_id" : "$authors.name"} }, // distinct
   {$sort : {"_id" : 1}});                // the actual sort

诀窍是在写入时而不是读取时对文档进行排序

如上所述,您要求MongoDB在文档到达您的应用程序之前对其进行修改。Mongo不喜欢在没有特定命令的情况下修改文档。这方面的主要选项有聚合、地图缩减和投影。这些都不适合您的问题:

  • 聚合可能比您需要的更复杂,请参见此处的另一个选项
  • MapReduce类似于聚合,但更复杂
  • 可以筛选返回的字段,但没有排序选项
相反,请按您希望检索的方式存储文档。当您最初编写或更新文档时,请使用
authors
数组上的数组更新运算符。存储的将保留顺序,因此检索文档时将对数组进行排序


这使得读取比使用聚合框架或map reduce更简单、更快。

诀窍是在写入时而不是读取时对文档进行排序

如上所述,您要求MongoDB在文档到达您的应用程序之前对其进行修改。Mongo不喜欢在没有特定命令的情况下修改文档。这方面的主要选项有聚合、地图缩减和投影。这些都不适合您的问题:

  • 聚合可能比您需要的更复杂,请参见此处的另一个选项
  • MapReduce类似于聚合,但更复杂
  • 可以筛选返回的字段,但没有排序选项
相反,请按您希望检索的方式存储文档。当您最初编写或更新文档时,请使用
authors
数组上的数组更新运算符。存储的将保留顺序,因此检索文档时将对数组进行排序


这使得读取比使用聚合框架或map reduce更简单、更快。

诀窍是在写入时而不是读取时对文档进行排序

如上所述,您要求MongoDB在文档到达您的应用程序之前对其进行修改。Mongo不喜欢在没有特定命令的情况下修改文档。这方面的主要选项有聚合、地图缩减和投影。这些都不适合您的问题:

  • 聚合可能比您需要的更复杂,请参见此处的另一个选项
  • MapReduce类似于聚合,但更复杂
  • 可以筛选返回的字段,但没有排序选项
相反,请按您希望检索的方式存储文档。当您最初编写或更新文档时,请使用
authors
数组上的数组更新运算符。存储的将保留顺序,因此检索文档时将对数组进行排序


这使得读取比使用聚合框架或map reduce更简单、更快。

诀窍是在写入时而不是读取时对文档进行排序

如上所述,您要求MongoDB在文档到达您的应用程序之前对其进行修改。Mongo不喜欢在没有特定命令的情况下修改文档。这方面的主要选项有聚合、地图缩减和投影。这些都不适合您的问题:

  • 聚合可能比您需要的更复杂,请参见此处的另一个选项
  • MapReduce类似于聚合,但更复杂
  • 可以筛选返回的字段,但没有排序选项
相反,以您希望检索的方式存储文档。当您最初编写或更新文档时,请使用
au上的数组更新运算符