如何通过 Mongoose 中的对象数组查找?

How to find by array of objects in Mongoose?

我有 Mongoose.Schema 这样的:

const pixelSchema = mongoose.Schema({
  x: String,
  y: String,
  color: String,
});

我还有这样的对象数组:

let pixels = [
  {x: 0, 1: 0, color: 'blue'},
  {x: 0, y: 1, color: 'blue'},
  {x: 0, y: 2, color: 'blue'},
]

我如何检查此元素之一是否已存在于数据库中? 我的解决方案现在看起来像这样,但我认为它非常低效。

pixels.map(pixel => {
  Pixel.find(pixel, (err, pixels) => {
    if (pixels) {
      console.log('Find!');
    }
  });
});

将该数组用作 $or query document. The $or 运算符的一部分让您可以对两个或多个表达式的数组执行逻辑或运算,并选择满足以下条件的文档至少一种表达方式。

所以你最后的查询应该是:

let pixels = [
  {x: 0, y: 0, color: 'blue'},
  {x: 0, y: 1, color: 'blue'},
  {x: 0, y: 2, color: 'blue'},
];

let query = { "$or": pixels };

Pixel.find(query, (err, pixels) => {
    if (pixels) {
        console.log('Find!');
    }
});

你可以试试

let pixels = [
  {x: 0, 1: 0, color: 'blue'},
  {x: 0, y: 1, color: 'blue'},
  {x: 0, y: 2, color: 'blue'}
]

Pixel.find({ "$or": pixels}, function(error, pixel) {
    if(pixel) {
        console.log('Found pixel');
    }
} );