MongoDB $oid与ObjectId的区别

19

我正在尝试使mongodb查询工作。集合以以下格式出现:

{
"_id": {
    "$oid": "54651022bffebc03098b4567"
},
"browser": "ie",
"browser_version": "10.0 Desktop",
"os_version": "8",
"device": null,
"os": "Windows"
}

以下内容有效:

{
    "_id": {
        "$in": [
            {
                "$oid": "54651022bffebc03098b4567"
            },
            {
                "$oid": "54651022bffebc03098b4568"
            }
        ]
   }
}

但是,以下代码会导致语法错误:

{
    "_id": {
        "$in": [
            ObjectId("54651022bffebc03098b4567"),
            ObjectId("54651022bffebc03098b4568")
        ]
    }
}

有类似的问题建议使用ObjectId:

如何使用java创建带有ObjectIds的查询?

$all参数在mongodb中与ObjectId列表不兼容


2
你使用哪个客户端输入和运行这些查询?Mongo shell?Java程序?(底部链接到了一篇Java文章。)虽然许多概念和细节在所有客户端中都是相似的,但许多客户端都有自己独特的怪癖。例如,在你的第三个代码块中,我期望只有JavaScript(包括mongo shell)中才能使用ObjectId()语法。 - jared
等等,你是在用Java试这个吗?那不是Java创建对象的方法。 - Sammaye
我正在 Mongolab 浏览器中运行查询。我还尝试使用 MongoId() 构造函数在 php 中运行相同的查询,结果也很好。 - Vlad Vinnikov
1个回答

29

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接