MongoDb将选择与$或$ limit结合起来

时间:2017-03-24 07:47:05

标签: javascript node.js mongodb mongoose

我使用mongoose和MongoDb。测试运行将以它们所处的当前状态保存。我希望打开或运行测试运行以及最后十次完成的测试运行。

如何实现这一目标?

我现在的查询如下所示:

...

models.testRun.find()
  .or([
    { isOpen: true },
    { isRunning: true },
    { $and: [{ isOpen: false }] } // missing statement to select 10 entries
  ])
  .sort({
    updatedAt: "descending"
  })
  .populate(populateQuery)
  .exec((error, testRuns) => {
    console.log(testRuns);
  });

在最后一个$或条目中,我认为我可以输入$和查询,选择最后十次测试运行。

测试运行的架构如下所示

const testRunSchema = mongoose.Schema({
   isOpen: {
      type: Boolean,
      required: true,
   },
   isRunning: {
      type: Boolean,
      required: true,
   },
   hasError: {
      type: Boolean,
      required: true,
   },
}, { timestamps: true });

1 个答案:

答案 0 :(得分:0)



...

models.testRun.find()
  .or([
    { isOpen: true },
    { isRunning: true },
    { $and: [{ isOpen: false }] } // missing statement to select 10 entries
  ])
  .sort({
    updatedAt: "descending"
  }
  .{ $limit : 10 })
  .populate(populateQuery)
  .exec((error, testRuns) => {
    console.log(testRuns);
  });




上述添加应该有效,除非有关于Mongoose的具体内容