首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询嵌套对象的Mongodb

查询嵌套对象的Mongodb
EN

Stack Overflow用户
提问于 2013-01-28 10:33:47
回答 2查看 1.1K关注 0票数 0

我的目标是,

代码语言:javascript
复制
{
   "Team-A": {
        "captain": "A",
        "homeGround": "some ground",
        "winLoss": "12-4-0"
    },
    "Team-B": {
        "captain": "B",
        "homeGround": "some ground 2",
        "winLoss": "4-4-4"
    }
}

我需要显示这些信息,

代码语言:javascript
复制
<h1>Team-A</h1>
<h2>some ground</h2>
<h3>12-4-0</h3>

<h1>Team-B</h1>
<h2>some ground2</h2>
<h3>4-4-4</h3>

Nodejs:

代码语言:javascript
复制
MongoClient.connect("mongodb://localhost:27017/MY_DB_TEST", function(err, db) {
      if(!err) {
        console.log("We are connected");        

        var collection =  db.collection('football_teams');      
        var stream = collection.find().stream();

        stream.on("data", function(item){
            console.log(item);
            res.render('index', {obj: item });
        });     
      }
    });

Jade:

代码语言:javascript
复制
h1= obj.captain
h2= obj.homeGround
h3= obj.winLoss

我的控制台输出是:

代码语言:javascript
复制
{ _id: 51064fa1e0d5d118b4b29aa0,
  'Team-A': {
        'captain": 'A',
        'homeGround": 'some ground',
        'winLoss': '12-4-0'
    } }

title is not defined
    at eval (eval at <anonymous> (C:\node_modules\jade\lib\jade.js:176:8))
    at exports.compile (C:\node_modules\jade\lib\jade.js:181:12)
    at Object.exports.render (C:\node_modules\jade\lib\jade.js:216:14)
    at View.exports.renderFile [as engine] (C:\node_modules\jade\lib\jade.js:243:13)
    at View.render (C:\node_modules\express\lib\view.js:75:8)
    at Function.app.render (C:\node_modules\express\lib\application.js:503:10)
    at ServerResponse.res.render (C:\node_modules\express\lib\response.js:721:7)
    at CursorStream.exports.index (C:\Users\HFR&D\Desktop\nodemongoexpress\routes\index.js:18:8)
    at CursorStream.EventEmitter.emit (events.js:96:17)
    at CursorStream._onNextObject (C:\Users\HFR&D\Desktop\nodemongoexpress\node_modules\mongodb\lib\mongodb\cursorstream

我不明白我应该如何循环我的对象,得到值Team-A/Team-B和它们各自的细节。

如何使用nodejsjade实现这一目标。

更新:

假设有20个团队,我的收藏将包含20份文件。我想要做的是,循环遍历我的收集和显示信息在20个文件中,如前所述。

  • 我的数据库结构正确吗?我应该为每个团队准备一个不同的文档吗?
  • 如果是的话,我如何获得文件的标题(team-A,team-B)动态地呈现在玉石中?
EN

回答 2

Stack Overflow用户

发布于 2013-01-28 11:06:14

你确实得到了团队-一个集合,正如你在你的console.log中看到的

代码语言:javascript
复制
{ _id: 51064fa1e0d5d118b4b29aa0,
  'Team-A': {
        'captain": 'A',
        'homeGround": 'some ground',
        'winLoss': '12-4-0'
    } }

您得到的错误是title is not defined,所以我猜其他的错误正在破坏您的代码。(可能布局的标题变量没有设置?)

在你解决了这个问题之后,就像这样

代码语言:javascript
复制
h1= obj['Team-A'].captain
h2= obj['Team-A'].homeGround
h3= obj['Team-A'].winLoss

这会给你数据。

票数 0
EN

Stack Overflow用户

发布于 2013-02-03 17:21:06

代码语言:javascript
复制
var myobj = {
 "Team-A": {
   "captain": "A",
   "homeGround": "some ground",
   "winLoss": "12-4-0"
 },
 "Team-B": {
   "captain": "B",
   "homeGround": "some ground 2",
   "winLoss": "4-4-4"
 }
};

var key = Object.keys(obj)[0] // gives you the first key i.e. Team-A. its an array so every key is easily accessible.
var captain = myobj[key].captain // gives 'A'
var homeGround = myobj[key].homeGround // gives 'some ground'
var winloss = myobj[key].winloss //gives "12-4-0"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14560088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档