Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb mongoose在嵌套的数据数组上的位置_Mongodb_Mongoose - Fatal编程技术网

Mongodb mongoose在嵌套的数据数组上的位置

Mongodb mongoose在嵌套的数据数组上的位置,mongodb,mongoose,Mongodb,Mongoose,我的收藏是这样的: { "_id" : ObjectId("590886af47627f86e5857141"), "code" : "MY", "pre_title" : "republic of", "name" : "Malaysia", "topics" : [ { "name" : "overview", "body" : "ergergerg123234", "type" : "info", "_id" : O

我的收藏是这样的:

{
"_id" : ObjectId("590886af47627f86e5857141"),
"code" : "MY",
"pre_title" : "republic of",
"name" : "Malaysia",
"topics" : [ 
    {
        "name" : "overview",
        "body" : "ergergerg123234",
        "type" : "info",
        "_id" : ObjectId("5931243d26fca3496dbffe92"),
        "facts" : [ 
            {
                "key" : "capital",
                "value" : "Kuala Lumpur",
                "_id" : ObjectId("5931243d26fca3496dbffe96")
            }, 
            {
                "key" : "population",
                "value" : "232424234",
                "_id" : ObjectId("5931243d26fca3496dbffe95")
            }, 
            {
                "key" : "reliogion",
                "value" : "Islam",
                "_id" : ObjectId("5931243d26fca3496dbffe94")
            }, 
            {
                "key" : "government_form",
                "value" : "Federal constitutional monarchy",
                "_id" : ObjectId("5931243d26fca3496dbffe93")
            }
        ]
    }, 
    {
        "name" : "Good to know",
        "body" : "here in good to know",
        "type" : "info",
        "_id" : ObjectId("5931243d26fca3496dbffe90"),
        "facts" : [ 
            {
                "key" : "key1",
                "value" : "value1",
                "_id" : ObjectId("5931243d26fca3496dbffe91")
            }
        ]
    }
]
}
我需要访问topicId=“X”和countryId=\u id的主题。我写了这行,但结果是错误的:所以它有两个条件。第一个countryId应匹配,然后是TopicId

  var query = {"_id":_id,"topics.$._id": topicId }
   Country.findOne(query ,function (err, topic) {

    console.log('topic',topic);
})
更新:

它是这样工作的,但我还需要深入了解事实,其中key={XX}

Country.findById(query).select({ topics: { $elemMatch: { _id: topicId } 
} }).
  .then((topic,err) => {

从查询中删除$使用主题。$。\u id代替主题。$。\u id

Country.findOne({“\u id”:{u id,“主题”.\u id:topicId},{“主题”.$::1},函数(err,topic){
。是对语法的更正。请更仔细地阅读链接的答案和文档。我还需要另一个位置:{“\u id”:{u id:},“主题”;“topics.\u id”:topicId,“主题。$.facts.key”:_key}。实际上where子句是3个条件。所有内容都包含在其中。匹配和“筛选”几乎有所有可能的情况单数或多个数组元素。你主要还是不理解基本语法。请再次阅读和学习。当你有一个新问题与你实际提出的问题不同时,你可以回答。但请先理解给出的答案。@NeilLunn:我完全读过了。我的问题不同。这个问题只有1个内部数组“shape”。我的还有一个facts。我的第一个问题通过你的链接解决了。但是现在我需要进入facts内部,所以查询如下:
var query={“\u id”:{u id”:{topicd,“facts”:{$elemMatch:{key:key}}}
但是它也不工作。不,它返回所有数据
var query = {"_id":_id,"topics._id": topicId }
 Country.findOne(query,{topics.$:1} ,function (err, topic) {

   console.log('topic',topic);
})