Javascript Mongoose检索对象数组。对于每个对象,我只需要两个属性

Javascript Mongoose检索对象数组。对于每个对象,我只需要两个属性,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我只是在用JavaScript练习猫鼬 我的猫鼬模式如下: const item = new mongoose.Schema({ name: { type: String, required: true, unique: true }, qty: { type: Number, required: true }, costPrice: Number }); const supplySchema = new mongoose.Schem

我只是在用JavaScript练习猫鼬

我的猫鼬模式如下:

const item = new mongoose.Schema({
  name: {
    type: String,
    required: true,
    unique: true
  },
  qty: {
    type: Number,
    required: true
  },
  costPrice: Number
});

const supplySchema = new mongoose.Schema({
  items: [item]
});

const Supply = mongoose.model("Supply", supplySchema);
现在我只想使用mongoose检索
项的数组

我希望我的数据如下所示:

[
  {
    "name" : "Lemon",
    "qty" : 5
  },
  {
    "name": "Sugar",
    "qty": 5
  }
]

[
  {
    "_id": "5e4df1c1d48926133879f650",
    "costPrice": 0.4,
    "name": "Sugar",
    "qty": 5
  }
]
但现在我得到的数据是这样的:

[
  {
    "name" : "Lemon",
    "qty" : 5
  },
  {
    "name": "Sugar",
    "qty": 5
  }
]

[
  {
    "_id": "5e4df1c1d48926133879f650",
    "costPrice": 0.4,
    "name": "Sugar",
    "qty": 5
  }
]
我尝试在下面编写这样的代码,但它不起作用:

const supplyDoc = await Supply.findOne();
const supplies = await supplyDoc.items.select("-_id");
return supplies;
我想我可以在项目上使用投影,并指定数组中的每个对象不需要_id属性。但是我的代码不起作用。我可以利用mongoose或MongoDB方法吗?或者我必须使用javascript来操作数组吗


希望听到一些建议。谢谢大家!

如果需要项数组,首先应该使用Model.find()而不是Model.findOne()

是的,您可以使用“投影”参数来选择所需的字段

所以

const supplies=wait Supply.find({},“name-qty”).exec()
编辑:显然,您需要特别排除_id字段,您可以使用
-
作为前缀

const supplies=wait Supply.find({},“-\u id name qty”).exec()
试着这样做

  let supplies= await models.Supplier.find( { }, { name:1,qty:1,_id: 0 } )

我已修改以遵循您的代码。因此检索到的数据是:``[{“name”:“Sugar”,“qty”:5},{“name”:“Ice”,“qty”:5,“\u id”:“5e4e005a96944c0c1c46dbc1”}```但是现在的情况是每个
项都有自己的
\u id
,并且
\u id
被检索。如何“删除”此属性?在投影字符串中添加
-\u id