猫鼬.find起作用,直到输入查询条件

时间:2019-03-18 16:13:17

标签: node.js mongodb express mongoose

如果我将我的“查询”添加到workflow.find {},则不会得到响应。

我认为我的子文档命名不正确。

我需要能够深入研究“工作流和组件”级别。

我尝试过删除文本。部分,甚至直接调用名称字段,但不确定我缺少什么。

router.get('/findcomponent', (req, res) =>{
        const workflow = require('../models/WorkFlowOnly.js')
        const id = req.params.id
        const query = {'texto.Workflow.Name' : 'Test WE'} //works


    workflow.find(query, function(err, data) { console.log(data)  /* ... */});//works

    })   

带有已过滤结果的控制台日志

{ _id: 5c8fbe0ed6dd2e0f6c5f7990,
  texto:
   { Workflow:
      { ID: 'Workflow-STARK-ahinson1-2019.03.03-20.14.43-VYHP',
        LocalCachePath: 'Z:\\MAITest\\Cache',
        SharedCachePath: null,
        Name: 'Test WE',
        Desc: 'I\'m testing this',
        Components: [Object] } },
  Components: [] }


Data

未定义查询时从控制台记录日志:

[ { _id: 5c8fad698481aa2a881f9caa,
    texto: { Workflow: [Object] },
    Components: [] },
  { _id: 5c8fbe0ed6dd2e0f6c5f7990,
    texto: { Workflow: [Object] },
    Components: [] } ]

更新:确实很好,谢谢,当我尝试挖掘组件级别时遇到了类似的问题。 这是我正在尝试的新查询代码,我已经尝试了其他一些变化,这是两个。

const query = {'texto.Workflow.Components.Component.0.ID' : 'ImageReaderComponentGRQL'} 
const query = {'texto.Workflow.Components.Component.Component.0.ID' : 'ImageReaderComponentGRQL'} 
const query = {'texto.Workflow.Components.Component.0.ID' : 'ImageReaderComponentGRQL2'} //THIS WORKS -----UPDATED

下面是测试记录的mongodb列表视图的副本/粘贴。

id:5c8fbe0ed6dd2e0f6c5f7990
texto:Object
Workflow:Object
ID:"Workflow-2019.03.03-20.14.43-VYHP"
LocalCachePath:"Z:\MAITest\Cache"
SharedCachePath:null
Name:"Test WE"
Desc:"I'm testing shit so fuck off"
Components:Object
Component:Array
0:Object
ID:"ReaderComponentGRQL2"
Type:"ReaderComponent"
Name:"ReaderU08"
Desc:null
Properties:Object
InputPorts:null
OutputPorts:Object
1:Object
2:Object

3 个答案:

答案 0 :(得分:0)

我认为您的mongo query不正确

const query = {'texto.Workflow.Name' : 'Test WF'} // here
workflow.find(query, function(err, data) { console.log(data)  /* ... */});

})

答案 1 :(得分:0)

尝试如下使用:

   router.get('/findcomponent', (req, res) =>{
        const workflow = require('../models/WorkFlowOnly.js')
        const id = req.params.id
        // const query = "['texto.Workflow.Name' : 'Test WF'}"
        const query = { 'texto.Workflow.$.Name' : 'Test WF' }

    workflow.find(query, function(err, data) { 
        console.log(data)  /* ... */
       });
    })   

或选择不使用const query就可以做到这一点:

       workflow.find({'texto.Workflow.Name': "TEST WF"}, function(err, data) { 
            console.log(data)  /* ... */
           });
        })  

答案 2 :(得分:0)

谢谢大家的帮助,这就是我的想法 该查询适用于我的数组子文档

const query = {'texto.Workflow.Components.Component.0.ID' : 'ImageReaderComponent'}