从mongodb / nodejs

时间:2019-02-27 22:12:00

标签: node.js json mongodb nested

我试图弄清楚如何查询Components对象内的嵌套对象。数据是从已解析的json文件插入的。

查询

var query = {}
cursor = db.collection("workflows").find(query).toArray(function(err, result) {
if (err) throw err;

console.log(result);
db.close();
    });

当我运行上面的查询时,将返回此数据:

  

在这一点上,我只是想让它以某种方式进行过滤。我已经尝试过Name:'Test WF'及其它的其他变体,但仍然无法得到过滤的响应。

[ { _id: 5c77040838f9d322b89bbd82,
texto:
 { _id: 12,
   LocalCachePath: 'Z:\\Test\\Cache',
   SharedCachePath: [],
   Name: 'Test WF',
   Desc: 'I\'m testing',
   Components: [Array] } },
{ _id: 5c7704164413692978a9dd1a,
texto:
 { _id: 'Workflow-2019.02.22-23.21.15-MKRU',
   LocalCachePath: 'Z:\\MAITest\\Cache',
   SharedCachePath: [],
   Name: 'Test WF',
   Desc: 'I\'m testing',
   Components: [Array] } },
 { _id: 5c77046335b012379c99951b,
texto:
 { _id: '154',
   LocalCachePath: 'Z:\\Test\\Cache',
   SharedCachePath: [],
   Name: 'Test WF',
   Desc: 'I\'m testing',
   Components: [Array] } },
 { _id: 5c7704787bde6f36543d1016,
texto:
 { _id: 'Workflow-2019.02.22-23.21.15-MKRU',
   LocalCachePath: 'Z:\\Test\\Cache',
   SharedCachePath: [],
   Name: 'Test WF',
   Desc: 'I\'m testing',
   Components: [Array] } } ]

任何见识都会对我一次跨过这一步有所帮助。

这是另一个给我结果的查询,但我想我的问题是将我的结果解析为变量。

var query = {'texto.Components.0.Name' : {$gt: ''}}
// var query = {'testo.Name' : {$gt: ''} }
 cursor = db.collection("workflows").find(query).toArray(function(err, result) {
    if (err) throw err;

2 个答案:

答案 0 :(得分:0)

使用点表示法(例如texto.Name)查询和检索嵌套对象中的字段,例如:

var query = {'texto.Name': 'Test WF'}

答案 1 :(得分:0)

简单

db.getCollection('TestQueries').find({'texto.Name': 'Test WF'})

正则表达式用于不区分大小写。

db.getCollection('TestQueries').find({"texto.Name":{
                                 '$regex' : '^test wa$', '$options' : 'i'
                                 }})

使用归类

db.fruit.createIndex( {"texto.Name": 1},{ collation: {
                     locale: 'en', strength: 2 
                     } } )

db.getCollection('TestQueries').find( 
            { "texto.Name": "test wa" } ).collation( { locale: 'en', strength: 2 } 
            )