Với hai nút, n và m, mà giống như thế:
CREATE ({id: 1, color: ["red", "blue", "green", "yellow"]})
CREATE ({id: 2, color: ["red", "blue", "green", "white"]})
Bạn có thể làm một cái gì đó như thế này:
MATCH n, m
WHERE n.id = 1 AND m.id = 2
RETURN length(FILTER(x in n.color WHERE x in m.color))
Các FILTER
chức năng lặp qua mảng n.color, ràng buộc giá trị hiện tại là x
(tùy ý do tôi chọn, có thể khác nhau). Vị từ (x in m.color
) được kiểm tra cho mỗi giá trị x
và nếu nó được đánh giá là đúng, phần tử đó được đẩy vào mảng mới mà trả về FILTER
. Bạn có thể để nó ở đó để xem giao điểm của hai mảng (đỏ, xanh dương và xanh lá cây trong trường hợp này), hoặc bọc nó trong hàm length
để xem số lượng màu được chia sẻ giữa hai nút (3 trong trường hợp này) .
Kiểm tra các tài liệu LỌC đầy đủ ở đây: http://docs.neo4j.org/chunked/milestone/query-functions-collection.html#functions-filter
Nguồn
2013-12-09 23:38:00
1 cho câu trả lời tốt với lời giải thích, nhưng (vì câu trả lời giả định phiên bản 2.0, cũng có thể) sử dụng kết hợp với các đặc tính: 'MATCH (n {id: 1}) 'et cetera. – jjaderberg
Ah vâng. Tôi đang sử dụng bản phát hành mốc 2.0 (M06) không hỗ trợ cú pháp đó, nhưng gọi tốt. –
bạn đề cập đến 'length' ở cuối, nhưng' count' trong truy vấn không thực sự có ý nghĩa - nó sẽ chỉ trả lại số kết quả. –