Mongodb 使用moongoose find()方法查询数组中的项
下面是我的模式的样子Mongodb 使用moongoose find()方法查询数组中的项,mongodb,mongoose,Mongodb,Mongoose,下面是我的模式的样子 const CollectionSchema = new mongoose.Schema({ since: Date, batch_id: Number, info: [InfoSchema], items: [ItemSchema] }); const ItemSchema = new mongoose.Schema({ name: String, price: Number, url: String }); 我正在查找特定商品名称的集合批
const CollectionSchema = new mongoose.Schema({
since: Date,
batch_id: Number,
info: [InfoSchema],
items: [ItemSchema]
});
const ItemSchema = new mongoose.Schema({
name: String,
price: Number,
url: String
});
我正在查找特定商品名称的集合批次id、集合信息、商品价格、商品url。请注意,集合有一个项目数组,我们可以假定项目名称是不同的。下面的查询(我认为)应该返回集合信息+批次id,用于包含任何名为“lego”的项目的集合
Collections.find(
{ "items.name": 'lego' },
{ info: 1, batch_id: 1 }
)
.where("since")
.gt(minutesAgo)
我想在回复中包括商品价格和商品url。如何更改find()调用以返回该数据?同样,添加项目:1将添加所有项目(但我只查找匹配项目的价格和url)。您可以将
项目。价格和项目。url
放入select查询以包括缺少的字段
Collections.find(
{“items.name”:“乐高”},
{info:1,batch_id:1,“items.price”:1,“items.url”:1}
)
.何处(“自”)
.gt(分钟前)
您可以仅返回所选项目,但不幸的是,在这种情况下,您无法选择要返回项目的哪些字段(您需要使用聚合框架):
上面的查询将只返回第一个匹配项,而不是所有匹配项
这将返回集合中每个项目(而不仅仅是所选项目)的价格和url。
Collections.find(
{ "items.name": "lego" },
{ info: 1, batch_id: 1, "items.$": 1 }
)