# Mongo hack
## Update with using value inside doc
```
db.entities.updateOne(
{ entityId: 1553 },
[{
$set: {
entities: [{
orgnizationId: '$entity.organizationId',
entityId: '$entity.entityId'
}]
}
}]
])
```
### Results
<table>
<tr>
<td>Before</td>
<td>After</td>
</tr>
<tr>
<td>
<pre>
{
entityId: 1553
organizationId: 45
}
</pre>
</td>
<td>
<pre>
{
entityId: 1553
organizationId: 45
entities: [{
organizationId: 45
entityId: 1553,
}]
}
</pre>
</td>
</tr>
</table>
## Set in aggregation
```
db.rakeLiveChat_Users.aggregate([
{ $match: { rakeLiveChatUserId: 1553 } },
{
$lookup: {
from: 'entities',
localField: 'entityId',
foreignField: 'entityId',
as: 'entity'
}
},
{ $unwind: '$entity' },
{
$set: {
entities: [{
orgnizationId: '$entity.organizationId',
entityId: '$entity.entityId'
}]
}
}
])
```
### Results
<table>
<tr>
<td>Before</td>
<td>After</td>
</tr>
<tr>
<td>
<pre>
{
rakeLiveChatUserId: 1553,
entityId: 45
}
</pre>
</td>
<td>
<pre>
{
rakeLiveChatUserId: 1553,
entityId: 45,
entities: [{
organizationId: 4
entityId: 45,
}]
}
</pre>
</td>
</tr>
</table>
## Update fields if it not exists
```
db.entities.updateOne(
{ entityId: 808280 },
[{
$set: {
lastName: {
$switch: {
branches: [{
case: { $eq: [{ $type: "$lastName" }, 'missing'] },
then: 'lastName-3'
}],
default: '$lastName'
}
},
firstName: {
$switch: {
branches: [{
case: { $eq: [{ $type: "$firstName" }, 'missing'] },
then: 'firstName-4'
}],
default: '$firstName'
}
}
}
}]
)
```
### Results
<table>
<tr>
<td>Before</td>
<td>After</td>
</tr>
<tr>
<td>
<pre>
{
entityId: 808280
firstName: 'firstName-1'
}
</pre>
</td>
<td>
<pre>
{
entityId: 808280
firstName: 'firstName-1',
lastName: 'lastName-3'
}
</pre>
</td>
</tr>
</table>