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?
您可以在 find 的第二个参数中执行与聚合投影相同的操作,\n从 MongoDB 4.4 开始,作为使 find 投影与聚合 \xe2\x80\x99s$project阶段一致的一部分,
db.items.find(\n{ ...filter },\n{\n _id: 0,\n name: 1,\n images: { $size: "$images" }\n})\nRun Code Online (Sandbox Code Playgroud)\n\n