javascript 在mongodb查询中查找单个标记

vmpqdwk3  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(101)

我想获取只包含'black'的标签,但当我运行查询时,我得到了包含黑色和其他颜色的标签。我如何才能得到只包含黑色的标签?
以下是我尝试的

const express = require('express');
const Inventory = require('../models/inventory');
const router = express.Router();

router.get('/inventory2', async (req, res) => {

  const inventory = await Inventory.find({
    tags: 'black',
  });
 
  res.send(inventory);
});

这就是我所期待的

[
 {
    size: { h: 22, w: 30.5, uom: 'cm' },
    _id: new ObjectId("643cda1ccfda6cc57d5948ba"),
    item: 'table',
    qty: 851,
    tags: [ 'black' ],
    status: 'D'
 }
]

这是我得到的:

[
  {
    size: { h: 14, w: 21, uom: 'cm' },
    _id: new ObjectId("643cd5ef705862daba5fa9e7"),
    item: 'journal',
    qty: 25,
    tags: [ 'black', 'red' ],
    status: 'A',
    __v: 0
  },
  {
    size: { h: 22, w: 30.5, uom: 'cm' },
    _id: new ObjectId("643cda1ccfda6cc57d5948ba"),
    item: 'table',
    qty: 851,
    tags: [ 'black' ],
    status: 'D'
  }
]
wfsdck30

wfsdck301#

您可以添加查询的大小,使它将获取的标签,只有指定的大小将1

const inventory = await Inventory.find({
    tags: 'black',
    tags: {$size : 1}
  });

或者也可以排除其他颜色

const inventory = await Inventory.find({
    tags: 'black',
    tags: {$nin: ['red', 'green']}
  });

相关问题