簡體   English   中英

如何確定 json 數組與 javascript 的相交對象?

[英]How to determine intersect objects in json array with javascript?

我有這樣的 json 數據:

[{
        "Id": 1,
        "Name": "Test 1",
        "Time": {
            "start": "22:00",
            "end": "22:30",
            "duration": 30
        }
    }, {
        "Id": 2,
        "Name": "Test 2",
        "Time": {
            "start": "22:05",
            "end": "22:35",
            "duration": 30
        }
    }, {
        "Id": 3,
        "Name": "Test 3",
        "Time": {
            "start": "23:25",
            "end": "23:40",
            "duration": 15
        }
    },{
        "Id": 4,
        "Name": "Test 4",
        "Time": {
            "start": "22:15",
            "end": "22:50",
            "duration": 15
        }
    }
]

我想得到這樣的結果,確定哪個與Time相交:

  [
    ["Test 1", "Test 2", "Test 4"],
    ["Test 3"]
]

我有解決方案,但它太復雜了,我在彼此內部使用了 4 個循環

如果有更簡單的解決方法,請指教,謝謝!

嘗試聚合,我不確定這是否完全符合您的要求,

  • $addFields添加新字段startHour ,使用$split從字符串中拆分字符串小時和分鍾,並且$arrayElemAt返回第一個元素表示小時
  • $group by startHour並制作Name數組
db.collection.aggregate([
  {
    $addFields: {
      startHour: {
        $arrayElemAt: [{ $split: ["$Time.start", ":"] }, 0]
      }
    }
  },
  {
    $group: {
      _id: "$startHour",
      Name: { $push: "$Name" }
    }
  }
])

操場

結果:

[
  {
    "Name": ["Test 1","Test 2","Test 4"],
    "_id": "22"
  },
  {
    "Name": ["Test 3"],
    "_id": "23"
  }
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM