'Why MongoDB saves Hash value in different format?
I am learning IPFS and trying to save IPFS
file info in MongoDB. After uploading, I get one hash value
ex: {fileHash: CID(QmbCaWPi9tSqcnykvBUMaH2M1d5PiVPLEfPwhJksSSeMak)}
And in MongoDB, I see something like this:
"fileHash": {
"code": 112,
"version": 0,
"multihash": {
"code": 18,
"size": 32,
"digest": "vxaISoMOXTpFy9rwnYilyk7pa6TlhkFDCZgcjGhXfm0=",
"bytes": "EiC/FohKgw5dOkXL2vCdiKXKTulrpOWGQUMJmByMaFd+bQ=="
},
"bytes": "EiC/FohKgw5dOkXL2vCdiKXKTulrpOWGQUMJmByMaFd+bQ=="
}
Now I want to update this document based on hash
value but don't understand what value I compare in match.
db.collection("test").update(filter, set);
I was trying like this:
db.collection("test").update({fileHash:"CID(QmbCaWPi9tSqcnykvBUMaH2M1d5PiVPLEfPwhJksSSeMak)"}, set);
But it doesn't work
Solution 1:[1]
I think CID()
is like a function.
When you use CID("QmbCaWPi9tSqcnykvBUMaH2M1d5PiVPLEfPwhJksSSeMak")
, it come up with a JSON.
{
"code": 112,
"version": 0,
"multihash": {
"code": 18,
"size": 32,
"digest": "vxaISoMOXTpFy9rwnYilyk7pa6TlhkFDCZgcjGhXfm0=",
"bytes": "EiC/FohKgw5dOkXL2vCdiKXKTulrpOWGQUMJmByMaFd+bQ=="
},
"bytes": "EiC/FohKgw5dOkXL2vCdiKXKTulrpOWGQUMJmByMaFd+bQ=="
}
So you should try something like
let fileHash = CID("QmbCaWPi9tSqcnykvBUMaH2M1d5PiVPLEfPwhJksSSeMak");
db.collection("test").update({fileHash: fileHash }, set);
Solution 2:[2]
Take that CID and use the method toString()
on it.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | YuTing |
Solution 2 | Nullable |