我的收藏结构是这样的
{id:123, name:One, photos:[{id:"Test1",name:"Image One"},{"id":Test2,name:"Image Two"}]}
{id:124, name:One, photos:[]}
我的主要目标是仅在数组大小大于0时才基于id
或name
获取数组的第一个元素。
但即使照片数组为空,所述查询也会返回该对象:
collection.find({"id":"124"},{"photos":{"$slice":[0,1]}})
我也尝试了where子句,但结果仍然是相同的
collection.find({"name":"album test"},{"photos":{"$slice":[0,1]},"$where":"photos.length > 0"})
有没有更好的方法来检查或查询对象?
答案 0 :(得分:1)
您可以按照以下方式执行此操作:
db.collection.find({id:124, "photos.0" : {$exists:true}},{"photos":{"$slice":[0,1]}})