Учитывая коллекцию следующим образом:
> db.food.find()
{ "_id" : 1, "fruit" : [ "apple", "banana", "peach", "strawberry", "grape" ], "size" : 2 }
{ "_id" : 2, "fruit" : [ "apple", "kumquat", "orange", "strawberry", "grape" ], "size" : 2 }
{ "_id" : 3, "fruit" : [ "cherry", "banana", "apple", "strawberry", "grape" ], "size" : 2 }
Мне нужно объединить {fruit: {$ slice: 2}} и {fruit: 1} в функции поиска.Вот то, что я попробовал, ни один из них не работает так, как я ожидал.
> db.food.find({}, {fruit : {$slice : 2}, fruit : 1, _id : 0})
{ "fruit" : [ "apple", "banana", "peach", "strawberry", "grape" ] }
{ "fruit" : [ "apple", "kumquat", "orange", "strawberry", "grape" ] }
{ "fruit" : [ "cherry", "banana", "apple", "strawberry", "grape" ] }
This method ONLY works for {fruit : 1, _id : 0}
> db.food.find({}, {fruit : 1, fruit : {$slice : 2}, _id : 0})
{ "fruit" : [ "apple", "banana" ], "size" : 2 }
{ "fruit" : [ "apple", "kumquat" ], "size" : 2 }
{ "fruit" : [ "cherry", "banana" ], "size" : 2 }
This method ONLY works for {fruit : {$slice : 2}}
> db.food.find({}, {$and : [{fruit : 1}, {fruit : {$slice : 1}}]})
{ "_id" : 1 }
{ "_id" : 2 }
{ "_id" : 3 }
Я даже не знаю, почему возвращаемые результаты выглядят так:
Чтобы было понятно, здесьвот что я хочу получить:
{ "fruit" : [ "apple", "banana" ] }
{ "fruit" : [ "apple", "kumquat" ] }
{ "fruit" : [ "cherry", "banana" ] }