Azure Cosmos DB(mongodb)find(),'$ in'查询没有返回任何内容

时间:2017-08-26 07:51:54

标签: node.js mongodb azure azure-cosmosdb

我的文档有一个名为'tags'的字段,它是一个字符串数组。 我正在尝试搜索“标签”中包含“关键字”的文档。 但是,这似乎不适用于Azure Cosmos DB。 任何帮助表示赞赏。

编辑:作为评论者之一,我用更完整的代码示例替换了我以前的帖子。

const MongoClient = require('mongodb').MongoClient;
const mongoConnectionString = process.env.MONGODB_CONNECTION_STRING;
const mongoOptions =
{
    connectTimeoutMS: 0
}

var mongoDB;

MongoClient.connect(mongoConnectionString, (err, db) => {

    if (err) throw err;

    mongoDB = db.db('mydb');

    mongoDB.collection('mycol', (err, collection) => {            
        if (err) throw err;            
        collection.find(
            {tags: {$in:['keyword']}},
            (err, cursor) => {
                if (err) throw(err);
                cursor.toArray((err, docs) => {
                    for (i = 0; i < docs.length; i++) {
                        console.log(JSON.stringify(docs));
                        db.close();
                    }
                });
            }
        );
    });
});

1 个答案:

答案 0 :(得分:0)

cosmos DB的神奇技巧是使用$ elemMatch。案件结案。

mongoDB.collection('mycol', (err, collection) => {            
    if (err) throw err;            
    collection.find({tags: {$elemMatch:{$in : ['keyword']}}}).toArray((err, docs) => {
        console.log(docs);
    });
});