Если вы хотите получить только те документы, в которых значение user
передано в качестве последнего элемента в массиве owners
из коллекции Products
, попробуйте следующее:
var user = 'myname';
Products.find( { $expr: {$eq : [{ $arrayElemAt: [ '$owners', -1 ] }, user]} })
Коллекция Данные:
/* 1 */
{
"_id" : ObjectId("5e1f82b0d02e05b694b48b9d"),
"productid" : "1",
"owners" : [
"others",
"myname"
]
}
/* 2 */
{
"_id" : ObjectId("5e1f84d3d02e05b694b4cbe0"),
"productid" : "2",
"owners" : [
"others",
"myname",
"anothername"
]
}
/* 3 */
{
"_id" : ObjectId("5e1f84e2d02e05b694b4cee2"),
"productid" : "3",
"owners" : [
"myname",
"anothername"
]
}
/* 4 */
{
"_id" : ObjectId("5e1f84ebd02e05b694b4d0d0"),
"productid" : "4",
"owners" : [
"myname"
]
}
Результат:
/** Only "productid" : "1" & "productid" : "4" are returned */
/* 1 */
{
"_id" : ObjectId("5e1f82b0d02e05b694b48b9d"),
"productid" : "1",
"owners" : [
"others",
"myname"
]
}
/* 2 */
{
"_id" : ObjectId("5e1f84ebd02e05b694b4d0d0"),
"productid" : "4",
"owners" : [
"myname"
]
}