Mongo db Collection 从客户端的第一个条目而不是最后一个条目中找到 returns

Mongo db Collection find returns from the first entry not from last from client side

我正在使用 mongodb 并且我正在使用一些工作正常的条件查询数据库,但结果来自第一个条目到最后一个条目,因为我想从最后添加的条目查询到数据库中的集合

TaggedMessages.find({taggedList:{$elemMatch:{tagName:tagObj.tagValue}}}).fetch()

Meteor 使用 Mongo.Collection and Mongo.Cursor 的自定义包装版本以支持开箱即用的反应性。它还抽象了 Mongo 查询 API 以使其更易于使用。

这就是 native way of accessing elements from the end 在这里不起作用的原因。

在服务器上

为了在 Meteor 中正确使用 $natural,您可以在服务器上使用 hint property as option (see the last property in the documentation)

const selector = {
  taggedList:{ $elemMatch:{ tagName:tagObj.tagValue } }
}

const options = {
  hint: { $natural : -1 }
}

TaggedMessages.find(selector, options).fetch()

旁注:如果您需要访问“本机”Mongo 驱动程序,则需要使用 rawCollection

在客户端

在客户端上,您无法真正访问 Mongo 驱动程序,但可以访问看似相似的 API(称为 minimongo 程序包)。在那里你不会有 $natural 可用(也许在将来),所以你需要使用降序排序:

const selector = {
  taggedList:{ $elemMatch:{ tagName:tagObj.tagValue } }
}

const options = {
  sort: { createdAt: -1 }
}

TaggedMessages.find(selector, options).fetch()