Mongoose如何从对象数组中的属性中查找

rmbxnbpk  于 2022-09-18  发布在  Go
关注(0)|答案(2)|浏览(209)

我有一个具有以下字段的对象数组:

let obj1 : {field1 : value1,  field2 : value2, field3 : value3};

let listOfObjects : [obj1 , obj2 , obj3 , obj4 .... objn]

Obj1到Objn具有相同的结构和字段。

我想用Mongoose查询一个Model,以便在对象列表“listOfObjects”中找到与“field1”值相等的文档。

我试过了,它奏效了,但如果可能的话,我正在寻找更好的解决方案。

let valuesList = listOfObjects.map( x => x.field1);
let docs = await Model.find({keyToFind : valuesList});

先谢谢你

tquggr8v

tquggr8v1#

您需要使用Java脚本的Filter方法来执行此操作。

以下是代码片段/解决方案:

let listOfObjects = [ 
  {field1 : 'value1',  field2 : 'value2', field3 : 'value3'}, 
  {field1 : 'value12',  field2 : 'value21', field3 : 'value31'}, 
  {field1 : 'value13',  field2 : 'value22', field3 : 'value32'}, 
  {field1 : 'value14',  field2 : 'value23', field3 : 'value33'}, 
  {field1 : 'value1',  field2 : 'value24', field3 : 'value34'}
];

console.log(`List of objects: `, listOfObjects)

let vList = listOfObjects.filter(x => listOfObjects[0].field1 === x.field1)

console.log(`Here is the Expected Solution:`); 

// field1 of first object matches with the field1 of last object in the list of objects. So, two objects are returned in the result.

console.log(vList)
mspsb9vt

mspsb9vt2#

使用直接查询从MongoDB本身过滤掉这些对象。这比检索所有MongoDB文档然后使用Java脚本过滤器更高效。

let docs = await Model.find({'ModelName.field1' : value1});

相关问题