如何在 find() 中获取数组长度而不是完整数组?

Mar*_*coS 1 javascript arrays mongoose mongodb node.js

我有一个 mongodb (使用 mongoose)集合(“items”),其中包含一个数组(“images”)。一些示例文档:

[
  {
    "_id" : ObjectId("543fa67e9672ec37ebe3d026"),
    "name" : "Alice",
    "images" : [
      { url: "http://images.com/1.jpg" },
      { url: "http://images.com/2.jpg" },
      { url: "http://images.com/3.jpg" },
    ]
  },
  {
    "_id" : ObjectId("543fa67e9672ec37ebe3d027"),
    "name" : "Bob",
    "images" : [
      { url: "http://images.com/4.jpg" },
      { url: "http://images.com/5.jpg" },
    ]
  },
]
Run Code Online (Sandbox Code Playgroud)

我想实现一个查询,它返回数组长度(而不是数组内容)以及其他文档属性。我知道我可以得到数组长度

db.items.aggregate([
  { "$project" : { "_id" : 0, "imagesLength" : { "$size" : "$images" } } }
])
Run Code Online (Sandbox Code Playgroud)

但我需要这些imagesLength值以及查找返回的文档:

db.items.findMany(
  { ...filter },
  { name: 1, imagesCount: 1 }
);
Run Code Online (Sandbox Code Playgroud)

问题是:如何获得数组长度以及结果find

tur*_*hal 5

您可以在 find 的第二个参数中执行与聚合投影相同的操作,\n从 MongoDB 4.4 开始,作为使 find 投影与聚合 \xe2\x80\x99s$project阶段一致的一部分,

\n
db.items.find(\n{ ...filter },\n{\n  _id: 0,\n  name: 1,\n  images: { $size: "$images" }\n})\n
Run Code Online (Sandbox Code Playgroud)\n

操场

\n