如何基于对象查询mongodb以获取包含一个或多个相等属性的文档(搜索)

我试图弄清楚如何将搜索对象发布到mongo,并查找与该搜索对象中所述的一个或多个属性匹配的所有文档。

例如,如果我发布了一个json对象,如下所示:

// searchObject
{
  "kind": "employee"
  "name": "casper","email": "daniel@mail.com"
}

我想从员工集合中获取包含"name": "casper""email":"daniel@mail.com"或全部包含router.post('/search',async (ctx) => { const searchObject = Object.assign(ctx.request.body); const collection = searchObject.kind const result = await store[collection].find({ $and: [{ searchObject }] }) console.log('result',result) }) 的所有文档。

这是我到目前为止所拥有的。但我不知道如何遍历我的财产。

$folder = 'C:\myfolder\'

Get-ChildItem -Path $folder | ForEach-Object {

    if( !$_.PSIsContainer ) {
        Remove-Item -Path $_.FullName -Force | Out-Null
    }
}
smartbeth1 回答:如何基于对象查询mongodb以获取包含一个或多个相等属性的文档(搜索)

尝试一下:

router.post('/search',async ctx => {
  const { kind,...searchObject } = ctx.request.body;
  const collection = searchObject.kind;
  const conditions = Object.keys(searchObject).reduce((acc,key) => {
    acc.push({ [key]: searchObject[key] });
    return acc;
  },[]);

  const result = await store[collection].find({
    $or: conditions,});
  console.log('result',result);
});
,

在reduce函数中添加if (key !== "kind")条件

router.post('/search',async ctx => {
const searchObject = ctx.request.body;
const collection = searchObject.kind;
const conditions = Object.keys(searchObject).reduce((acc,key) => {
    if (key !== "kind") acc.push({ [key]: searchObject[key] });
    return acc;
},[]);

const result = await store[collection].find({
    $or: conditions,});
console.log('result',result); 
});
本文链接:https://www.f2er.com/3065171.html

大家都在问