apoc.mongodb.get.byObjectId
过程 Apoc 扩展
apoc.mongodb.get.byObjectId(hostOrKey, db, collection, objectIdValue, config(default:{})) - 按对象 ID 值获取文档
签名
apoc.mongodb.get.byObjectId(host :: STRING?, db :: STRING?, collection :: STRING?, objectIdValue :: STRING?, config = {} :: MAP?) :: (value :: MAP?)
输入参数
| 名称 | 类型 | 默认 |
|---|---|---|
host |
STRING? |
null |
db |
STRING? |
null |
collection |
STRING? |
null |
objectIdValue |
STRING? |
null |
config |
MAP? |
{} |
配置参数
该过程支持以下配置参数
| 名称 (name) | type | 默认 | description(描述) |
|---|---|---|---|
compatibleValues |
boolean |
true |
将 MongoDB 数据类型转换为 Neo4j 数据类型 |
extractReferences |
boolean |
false |
如果为 true 且字段包含 ObjectId,它将包含相关文档而不是 ObjectId |
objectIdAsMap |
boolean |
true |
将 |
idFieldName |
字符串 |
|
|
安装依赖
Mongo 过程依赖于 APOC Extended 库中未包含的客户端库。
此依赖项包含在 apoc-mongodb-dependencies-2025.10.0-all.jar 中,可从 发布页面 下载。下载该文件后,应将其放入 plugins 目录并重启 Neo4j 服务器。
使用示例
字段描述
-
host:MongoDB 主机,格式为mongodb://<HOST_NAME>:<PORT>,或者在 apoc 配置中定义的 urlapoc.mongodb.myInstance.url=mongodb://<HOST_NAME>:<PORT>,可以通过简单地传递myInstance来调用 -
db:数据库名称 -
collection:集合名称 -
objectIdValue:要检索的文档的ObjectId -
config:配置 map
示例
假设存在以下集合
// Product
...
{"_id": ObjectId("product1"), "name": "Product 1", "price": 100}
{"_id": ObjectId("product3"), "name": "Product 2", "price": 200}
{"_id": ObjectId("product3"), "name": "Product 3", "price": 300}
{"_id": ObjectId("product4"), "name": ObjectId("507f191e810c19729de860ea"), "price": 400}
...
// Person
...
{"_id": ObjectId("person"), "name": "Andrea", "bought": [ObjectId("product1"), ObjectId("product3")]}
...
执行 CALL apoc.mongodb.get.byObjectId(<HOST>, <DB>, "product", "product1")
{
"_id": {
"timestamp": <...>,
"machineIdentifier": <...>,
"processIdentifier": <...>,
"counter": <...>,
}
"name": "Product 1",
"price": 100L
}
执行 CALL apoc.mongodb.get.byObjectId(<HOST>, <DB>, "product", "product4", {idFieldName: "name"})
{
"_id": {
"timestamp": <...>,
"machineIdentifier": <...>,
"processIdentifier": <...>,
"counter": <...>,
}
"name": "507f191e810c19729de860ea",
"price": 400L
}
执行 CALL apoc.mongodb.get.byObjectId(<HOST>, <DB>, "product", "product1", "_id", {extractReferences: true, objectIdAsMap: true, compatibleValues: false})
{
"_id": {
"timestamp": <...>,
"machineIdentifier": <...>,
"processIdentifier": <...>,
"counter": <...>,
},
"name": "Andrea",
"bought": [
{
"_id": {
"timestamp": <...>,
"machineIdentifier": <...>,
"processIdentifier": <...>,
"counter": <...>,
},
"name": "Product 1",
"price": 100
},
{
"_id": {
"timestamp": <...>,
"machineIdentifier": <...>,
"processIdentifier": <...>,
"counter": <...>,
},
"name": "Product 3",
"price": 300
},
]
}