繁体   English   中英

Mongoose 查找 Object 其中查询包含基于 ObjectId 的对象数组

[英]Mongoose find Object where query contains an array of objects based on the ObjectId

我想用异步 function 中的对象数组查询 model。

我的合同架构:

const ContractSchema = new mongoose.Schema({
  Nr: {
    type: String,
    trim: true,
    sparse: true,
  },
});

我的站架构

const StationSchema = new mongoose.Schema({
  ContractId: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'Contract',
    required: true,
  },
  Name: {
    type: String,
    trim: true,
  },
});

我的第一个查询有效,结果我得到了两个对象:

const contract = await Contract.find({ Nr: 'pi' });

我的第二个查询,结果我应该得到 2 个对象。 但是我得到了很多 ContractId 为 NULL 的对象。

const station = await Station.find({ ContractId: { $in: contract._id } });

为了进行测试,我更改了第二个查询,得到了两个结果:

const station = await Station.find({ ContractId: { $in: ['...9b', '...b4'] } });

对于我的第二个查询,我想获得没有任何 NULL 值的两个结果,我该怎么做? 这个查询应该是什么样的?

如果您想检索_id列表中存在的所有ContractId值,请像这样更改您的查询:

const ids = [ contract._id, otherContract._id ]
const station = await Station.find({ ContractId: { $in: ids } });

如果您想检索具有特定_id值的所有ContractId ,请像这样更改您的查询:

const station = await Station.find({ ContractId: contract._id });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM