在 mongo 文档中查找数组中的最后一项,并检查其字段是否为某个值

Find the last item in array in mongo document and check if its field is a certain value

我得到了这份文件:

{
_id: "ZApHZeqw98uhwqaey",
borrowerId: "DmGQyqenbNt4eBMia",
isSeenByOther: 1,
lenderId: "JsJyvseqiiazGxRuq",
messages: [{
   date: Sun Oct 25 2015 19:40:25 GMT+0100 (CET),
   from: "JsJyvseqiiazGxRuq",
   text: "Hi there"
},{
   date: Sun Oct 25 2015 19:40:35 GMT+0100 (CET),
   from: "DmGQyqenbNt4eBMia",
   text: "Hey!"
}]
}

我想要做的是只获取一个布尔值,说明 数组中最后一个对象项的字段 from 的值是否为:messages是当前用户。

我尝试了很多不同的 mongodb 投影,例如 $slice and $position,它基本上插入数组的开头,但对我的情况来说并不理想。

您可以使用下划线的_.last()函数如下:

var doc = MyCollection.findOne({ _id: "ZApHZeqw98uhwqaey" });
var lastElement = _.last(doc.messages);
if ( lastElement.from === Meteor.userId() ){
  ... do your thing
}